从Github读取一个CSV到R

我正在尝试从github读取一个CSV到R:

latent.growth.data <- read.csv("https://github.com/aronlindberg/latent_growth_classes/blob/master/LGC_data.csv") 

但是,这给了我:

 Error in file(file, "rt") : cannot open the connection In addition: Warning message: In file(file, "rt") : unsupported URL scheme 

我试过了?read.csv?download.filegetURL (它只返回奇怪的HTML),还有数据导入手册 ,但还是不明白如何使它工作。

我究竟做错了什么?

尝试这个:

 library(RCurl) x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv") y <- read.csv(text = x) 

你有两个问题:

  1. 你不链接到“原始”文件,但Github的显示版本(请访问https:\ raw.github.com …. csv的URL来查看原始版本和显示版本之间的区别)。
  2. 在很多情况下,https是R的问题,所以你需要使用像RCurl这样的RCurl来绕过它。 在某些情况下(不是在Github上),你可以简单地用http代替https,事情就可以解决,所以你可以先试试,但是我发现使用RCurl可靠,而且不需要额外的input。

url的文档:

请注意,不支持“https://”连接(Windows上有一些例外)。

所以问题是R不允许连接到https URL。

您可以使用curl使用download.file

 download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv", destfile = "/tmp/test.csv", method = "curl") 

我正在使用R 3.0.2,这个代码完成这项工作。

 urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv' dsin<-read.csv(urlfile) 

这也是

 urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv' dsin<-read.csv(url(urlfile)) 

编辑(sessionInfo)

 R version 3.0.2 (2013-09-25) Platform: i386-w64-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=Polish_Poland.1250 LC_CTYPE=Polish_Poland.1250 [3] LC_MONETARY=Polish_Poland.1250 LC_NUMERIC=C [5] LC_TIME=Polish_Poland.1250 attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] tools_3.0.2 

在类似的风格,我想我会更新答案,因为现在你可以使用哈德利的readr包。 只需要注意一点:您需要将url作为原始内容(请参阅下面的//raw.git... )。 这是一个例子:

 library(readr) data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv") 

瞧!

意识到这个问题是非常古老的,Google仍然把它作为一个最好的结果(至less对我来说),所以我决定提供2015年的答案。

现在通常都是通过r-bloggers描述的方式来转换curl包(包括着名的httr ),它提供了以下非常简单的解决scheme:

 library(curl) x <- read.csv( curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv") ) 

这是我一直在帮助开发rio的。 它基本上是一个通用的数据导入/导出包,支持HTTPS / SSL,并从其扩展中推断出文件types,从而使您可以使用一个导入函数基本上读取任何内容:

 library("rio") 

如果你从Github抓取你的CSV的“raw”url,你可以用import一行:

 import("https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv") 

结果是一个data.frame:

  top100_repository_name month monthly_increase monthly_begin_at monthly_end_with 1 Bukkit 2012-03 9 431 440 2 Bukkit 2012-04 19 438 457 3 Bukkit 2012-05 19 455 474 4 Bukkit 2012-06 18 475 493 5 Bukkit 2012-07 15 492 507 6 Bukkit 2012-08 50 506 556 ... 

curl可能不适用于窗户至less对我来说

这是在Windows中为我工作

download.file(“ https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ”,destfile =“/tmp/test.csv",method="wininet”)

在Linux中

download.file(“ https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ”,destfile =“/tmp/test.csv",method="curl”)