在私有github文件夹中采购R文件

时间:2018-10-02 18:31:15

标签: r authentication github devtools

我希望在私有github文件夹中获取一些R脚本,并通过R在某些环境中使用它。

在使用公共github文件夹时,这两个命令均可完成:get_URL和source_url(来自devtools)。

但是,当文件夹为私有文件夹并且需要身份验证时,事情会变得复杂。

是否有一种方法可以完成此操作,并将登录详细信息放入这些功能中,以便在需要进行某些github认证的情况下自动通过用户名和密码?

谢谢前进,

Tamas

2 个答案:

答案 0 :(得分:0)

TL; DR:可以,请参见下面的代码。


这是供任何人将来使用的方法,该方法可使用httr和可选的devtools从私有Github存储库中获取R脚本。

我进行了足够的搜索以找到解决方案的各个部分,然后将它们全部缝合在一起。因此功劳归功于其他多个线程和网站。

某些来源是hereherehere

请参见以下代码:

library(httr)

# Source R script from Github
script <-
  GET(
    url = "https://api.github.com/repos/{user_name}/{repo_name}/contents/{script_name}.R",
    authenticate({github_email}, {github_personal_access_token}),     # Instead of PAT, could use password
    accept("application/vnd.github.v3.raw")
  ) %>%
  content(as = "text")

# Evaluate and parse to global environment
eval(parse(text = script))

这可能仅适用于您拥有的私人仓库。我不确定它是否适用于与您共享的私人仓库。

See this link创建Github个人访问令牌(PAT)。如果需要,还可以将其另存为R中的环境变量。 devtools::github_pat()在这里很有用。

您的电子邮件和PAT(或密码)都必须用引号引起来。

答案 1 :(得分:0)

感谢Ethan和其他消息来源,我可以解决这个问题。

  1. 在GitHub上生成您的个人令牌
    1.1转到GitHub
    2.1在右上角转到“设置”
    2.2然后在左侧转到“开发人员设置”
    2.3选择选项“个人访问令牌”
    2.4选择选项“生成新令牌”
    2.5复制您的个人令牌
  2. 在您的主目录上,请执行以下步骤
    2.1创建文件.Renviron
macbook@user:~$ touch .Reviron

在此文件上,像这样写您的个人令牌:

macbook@user:~$ nano .Reviron
GITHUB_PAT=YOUR PERSONAL TOKEN
  1. 现在在R上,您可以使用以下方法检查您的个人令牌是否已保存:
Sys.getenv("GITHUB_PAT")

您还可以使用以下方法在R上编辑令牌:

usethis::edit_r_environ()

别忘了重新启动R以保存您的更改。

3。最后,在R上,这些行代码将从私人仓库中加载数据

library(httr)

req <- content(GET(
  "https://api.github.com/repos/you_group/your_repository/contents/your_path_to your_doc/df_test.Rdata",
  add_headers(Authorization = "token YOUR_TOKEN")
), as = "parsed")

tmp <- tempfile()
r1 <- GET(req$download_url, write_disk(tmp))
load(tmp)