You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中下载GitHub私有仓库中的压缩数据文件?

私有仓库的非公开资源访问需要携带身份认证信息,因此直接请求会返回404状态码,按照以下步骤操作即可解决问题:

第一步:获取GitHub个人访问令牌(PAT)
  • 登录GitHub账号,点击右上角头像,选择「Settings」
  • 左侧菜单栏下拉找到「Developer settings」并点击进入
  • 依次选择「Personal access tokens」->「Tokens (classic)」
  • 点击「Generate new token」,选择「Generate new token (classic)」,按提示完成账号验证
  • 填写令牌备注,仅勾选repo权限即可,按需设置令牌过期时间,最后点击「Generate token」
  • 生成后立刻复制保存令牌,该令牌仅会显示一次,丢失后需要重新生成
第二步:修改R下载代码

方法1:使用httr包(更稳定,推荐)

如果尚未安装httr包,先运行install.packages("httr")安装,后续代码如下:

library(httr)

# 替换为你自己生成的GitHub个人访问令牌
GITHUB_PAT <- "你刚才复制的令牌字符串"
# 保持原文件下载地址不变
url <- "https://github.com/aquijanoruiz/disability_benefits_EC/raw/master/ENSANUT_datasets/BDD_ENSANUT_2018_STATA_.zip"

# 创建临时存储文件
tf <- tempfile(fileext = ".zip")

# 携带认证信息发起下载请求
response <- GET(
  url = url,
  add_headers(Authorization = paste0("token ", GITHUB_PAT)),
  write_disk(tf, overwrite = TRUE)
)

# 校验下载结果
if (http_status(response)$category == "Success") {
  message("文件下载成功")
  # 后续可通过 unzip(tf) 解压文件读取数据
} else {
  stop("下载失败,错误信息:", http_status(response)$message)
}

方法2:直接修改download.file参数

如果不想引入额外依赖包,也可以直接给原生download.file添加认证头:

# 替换为你自己生成的GitHub个人访问令牌
GITHUB_PAT <- "你刚才复制的令牌字符串"
url <- "https://github.com/aquijanoruiz/disability_benefits_EC/raw/master/ENSANUT_datasets/BDD_ENSANUT_2018_STATA_.zip"
td <- tempdir()
tf <- tempfile(tmpdir=td, fileext = ".zip")
# 携带认证头下载文件
download.file(url, tf, headers = c(Authorization = paste0("token ", GITHUB_PAT)))
注意事项
  • 不要将包含PAT明文的代码上传到任何公开代码仓库,令牌泄露会导致你的账号仓库权限被恶意使用。你可以将PAT存入R环境变量,调用时通过Sys.getenv("GITHUB_PAT")读取,避免代码中硬编码令牌

内容的提问来源于stack exchange,提问作者Alonso Quijano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:15:08