我正在尝试将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.file
,getURL
(只返回了奇怪的HTML)以及data import manual,但仍然无法理解如何使其发挥作用。
我做错了什么?
答案 0 :(得分:86)
试试这个:
library(RCurl)
x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")
y <- read.csv(text = x)
你有两个问题:
RCurl
之类的软件包来绕过它。在某些情况下(不是使用Github),你可以简单地用http取代https,然后就可以解决问题了,所以你可以先尝试一下,但我觉得使用RCurl是可靠的而不是太多的额外输入。答案 1 :(得分:21)
来自url
的文档:
请注意,不支持“https://”连接(有些连接 Windows上的例外情况。)
所以问题是R不允许同意https
URL。
您可以将download.file
与curl
:
download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv",
destfile = "/tmp/test.csv", method = "curl")
答案 2 :(得分:15)
我正在使用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
答案 3 :(得分:6)
与akhmed的风格类似,我想我会更新答案,因为现在你可以使用Hadley的readr
包。
需要注意的一件事是:您需要将网址设为原始内容(请参阅下面的//raw.git...
)。
这是一个例子:
library(readr)
data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv")
瞧!
答案 4 :(得分:5)
意识到问题已经很久了,谷歌仍然认为这是最好的结果(至少对我而言),所以我决定提供2015年的答案。
人们现在通常会迁移到curl
包(包括着名的httr
),如by r-bloggers所述,它提供了以下非常简单的解决方案:
library(curl)
x <- read.csv( curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv") )
答案 5 :(得分:3)
这就是我一直在帮助开发 rio 。它基本上是一个通用数据导入/导出包,支持HTTPS / SSL并从其扩展中推断出文件类型,因此您可以使用一个导入函数基本上读取任何内容:
library("rio")
如果您从Github获取CSV的“原始”网址,则可以使用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
...
答案 6 :(得分:1)
如今,GitHub似乎希望您通过其API来获取内容。我使用了gh程序包,如下所示:
require(gh)
tmp = tempfile()
qurl = 'https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv'
# download
gh(paste0('GET ', qurl), .destfile = tmp, .overwrite = TRUE)
# read
read.csv(tmp)
重要的部分是您提供个人访问令牌(PAT)。通过gh(.token = )
参数,或者像我一样,通过在~/.Renviron
文件[1]中全局设置PAT。当然,您首先必须在GitHub account上创建PAT。
[1] ~/.Renviron
,我猜所有r-lib软件包都首先搜索它,因为gh是一个。其中的令牌应如下所示:
GITHUB_PAT = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
您还可以使用usethis软件包来设置PAT,但是,您不想成为一名程序员。
答案 7 :(得分:0)
卷曲可能无法在Windows中使用
这在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“)
答案 8 :(得分:0)
一种相当虚构的方式...使用剪贴板中的复制/粘贴
x <- read.table(file = "clipboard", sep = "t", header=TRUE)
答案 9 :(得分:0)
如其他帖子所述,只需转到 github 上原始代码的链接即可。
例如:
x <- read.csv("https://raw.githubusercontent.com/rfordatascience/ tidytuesday/master/data/2018/2018-04-23/week4_australian_salary.csv")