提问人:histelheim 提问时间:1/21/2013 最后编辑:pnutshistelheim 更新时间:5/19/2023 访问量:74099
将 CSV 从 github 读取到 R 中
Read a CSV from github into R
问:
我正在尝试将 CSV 从 github 读取到 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
我尝试了 、 、(只返回奇怪的 HTML)以及数据导入手册,但仍然无法理解如何让它工作。?read.csv
?download.file
getURL
我做错了什么?
答:
从文档:url
请注意,不支持“https://”连接(某些 Windows 上的例外)。
所以问题是 R 不允许与 URL 连接。https
您可以与以下功能一起使用:download.file
curl
download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv",
destfile = "/tmp/test.csv", method = "curl")
评论
试试这个:
library(RCurl)
x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")
y <- read.csv(text = x)
您有两个问题:
- 您不是链接到“原始”文本文件,而是链接到 Github 的显示版本(访问 https:\raw.github.com 的 URL。csv 以查看原始版本和显示版本之间的差异)。
- https 在很多情况下是 R 的一个问题,所以你需要使用一个包来绕过它。在某些情况下(虽然不是 Github),您可以简单地将 https 替换为 http 并解决问题,因此您始终可以先尝试一下,但我发现使用 RCurl 可靠且没有太多额外的输入。
RCurl
评论
Error in function (type, msg, asError = TRUE) : SSL certificate problem: unable to get local issuer certificate
y <- read.csv(text=getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv"))
x <- getURL("https://github.com/eparker12/nCoV_tracker/blob/master/input_data/coronavirus_today.csv") y <- read.csv(text = x)
我正在使用 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
评论
?url
这就是我一直在帮助开发里约热内卢的目的。它基本上是一个通用的数据导入/导出包,支持 HTTPS/SSL 并从其扩展名推断文件类型,因此允许您使用一个导入函数读取基本任何内容:
library("rio")
如果您从 Github 获取 CSV 的“原始”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
...
评论
get_ext(file) : file has no extension
意识到这个问题已经很老了,谷歌仍然将其报告为最佳结果(至少对我来说是这样),所以我决定提供 2015 年的答案。
人们现在通常迁移到 r-bloggers 所描述的包(包括著名的),它提供了以下非常简单的解决方案:curl
httr
library(curl)
x <- read.csv( curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv") )
curl 可能不适用于 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")
与 akhmed 的风格类似,我想我会更新答案,因为现在你可以只使用 Hadley 的包。
需要注意的一点是:您需要将 url 作为原始内容(见下文)。
下面是一个示例:readr
//raw.git...
library(readr)
data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv")
瞧!
一个相当虚拟的方式......使用从剪贴板复制/粘贴
x <- read.table(file = "clipboard", sep = "t", header=TRUE)
现在似乎 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)。要么通过参数,要么像我一样,通过在文件 [1] 中全局设置 PAT。当然,您首先必须在 GitHub 帐户中创建 PAT。gh(.token = )
~/.Renviron
[1],我想所有 r-lib 包都会首先搜索,因为 gh 是一个。其中的令牌应如下所示:~/.Renviron
GITHUB_PAT = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
您还可以使用 usethis 包来设置 PAT。
正如其他帖子所提到的,只需转到 github 上原始代码的链接即可。
例如:
x <- read.csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2018/2018-04-23/week4_australian_salary.csv")
评论