這篇文章主要討論如何從URL中獲取數據。爲何須要從URL中獲取數據?瀏覽器
無論你的緣由是什麼,都是很棒的想法。下面是一些從URL中獲取數據的一些代碼,但願能幫到一些人。網絡
這裏僅僅處理表格形式的數據,並非從網絡中爬取數據。這是最簡單的一種狀況:在URL中儲存着一個txt或csv文件,你但願直接讀取數據,而不是先下載到本地,而後再讀進R中。函數
我喜歡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中,經過點擊Tools -> Import Dataset -> From Web URL,而後填寫URL地址。code
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對象。字符串