我想从私有 GitHub 存储库下载 csv 文件并将其加载到当前环境。我不想简单地这样做,read_csv("raw_git_url")因为脚本将是公开的,复制/粘贴 raw_git_url 会让我留下filename.csv?token=AHh_HT3Aetc....,我不希望我的令牌号被公开。
相反,我获得了 GitHub 身份验证令牌并将其作为.Renviron文件放入我的工作目录中。
例如,我可以将文件写入磁盘/工作目录,如下所示:
library(httr)
url <- "https://raw.githubusercontent.com/username/privatereponame/master/dataname.csv"
GET(url, write_disk("mynew.csv", overwrite=TRUE))
Run Code Online (Sandbox Code Playgroud)
但我不想写副本 - 只需在当前环境中提供 csv 文件即可。我错过了一些明显的东西吗?更改write_disk....为readr::read_csv命令不起作用。
我可以做一件很奇怪的事情 - 像这样访问原始内容:
x=GET(url, authenticate(Sys.getenv("GITHUB_PAT1"), ""))
enc<-stringi::stri_enc_detect(content(x, "raw"))
content(x, "text", encoding = enc[[1]]$Encoding[1])
Run Code Online (Sandbox Code Playgroud)
...然后编写一些脚本将文本转换为 csv...但这感觉太啰嗦了。
有时你必须提出一个问题才能找到答案:
x=GET(url, authenticate(Sys.getenv("GITHUB_PAT1"), ""))
content(x, type="text/csv")
Run Code Online (Sandbox Code Playgroud)
使用type中的参数content()设置 MIME 类型。