如何從URL中讀取txt或csv文件?

這篇文章主要討論如何從URL中獲取數據。爲何須要從URL中獲取數據?瀏覽器

  • 你想和不熟悉R的人分享你的代碼,以及你想避免解釋如何在文件開頭改變文件的路徑等問題。
  • URL中的數據一直更新,你想實時處理最新的數據。
  • 你但願你的代碼在另外一臺機器以及另外一個目錄下工做。
  • 你想在博客中發佈一個完整的可重複的分析實驗,你不想在文中出現」請到www.xxxx.com,下載數據並加載到R中」。

無論你的緣由是什麼,都是很棒的想法。下面是一些從URL中獲取數據的一些代碼,但願能幫到一些人。網絡

說明!!!

這裏僅僅處理表格形式的數據,並非從網絡中爬取數據。這是最簡單的一種狀況:在URL中儲存着一個txt或csv文件,你但願直接讀取數據,而不是先下載到本地,而後再讀進R中。函數

使用data.table::fread()

我喜歡data.table包。幾乎每一個項目中,我都會使用它。它是R中data.frame對象的擴展,可是在性能上有很大的提高。其中一個改進點就是fread()函數。它相似於base包中的read.csv()和read.table()函數。fread()在不少地方作了改善,可是這裏咱們僅僅使用它來讀取URL中的數據。使用fread()在本地讀取數據的格式以下:性能

library(data.table)
mydat <- fread('C://Some/File/Path.csv')

從網絡源中讀取數據和這沒有什麼區別。在help文件(?fread)中做者提供的樣例爲:url

library(data.table)
mydat <- fread('http://www.stats.ox.ac.uk/pub/datasets/csb/ch11b.dat')
head(mydat)
V1  V2   V3    V4 V5
1:  1 307  930 36.58  0
2:  2 307  940 36.73  0
3:  3 307  950 36.93  0
4:  4 307 1000 37.15  0
5:  5 307 1010 37.23  0
6:  6 307 1020 37.24  0

若是你在瀏覽器中訪問上面的連接,會彈出下載的窗口。若是你訪問上級地址http://www.stats.ox.ac.uk/pub...,你會發現不少的數據下載連接。經過fread()咱們能夠直接讀取數據到R中,而不用點擊下載連接進行下載。3d

使用RStudio

在RStudio中,經過點擊Tools -> Import Dataset -> From Web URL,而後填寫URL地址。code

使用RCurl::getURL()

library(RCurl)
myfile <- getURL('https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/data/bycatch.csv', ssl.verifyhost=FALSE, ssl.verifypeer=FALSE)

getURL()抓取指定URL中的內容,並不返回data.frame對象。它僅僅把URL中的內容儲存到字符串中。對象

class(myfile)
[1] "character"

因此,咱們怎麼獲取data.frame對象呢?咱們可使用textConnection()函數打開字符串中的連接,就像打開本地硬盤中的文件同樣。接着使用read.csv()函數(你也可使用read.table()或fread()函數)讀取字符串對象並建立data.frame對象。ssl

mydat <- read.csv(textConnection(myfile), header=T)
head(mydat)
Season  Area Gear.Type  Time Tows Bycatch
1 1989-90 North    Bottom   Day   48       0
2 1989-90 North    Bottom Night    6       0
3 1989-90 North Mid-Water Night    1       0
4 1989-90 South    Bottom   Day  139       0
5 1989-90 South Mid-Water   Day    6       0
6 1989-90 South    Bottom Night    6       0

如今,URL中的數據已成功轉換爲R中data.frame對象。字符串

相關文章
相關標籤/搜索