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

如何用R下载GitHub完整仓库?并读取其中的.r与.rmd文件

当然可以!用R来获取GitHub仓库里的.R和.Rmd文件完全没问题,我给你整理了几个实用的方法,按需选择就行:

方法1:用usethis包克隆整个仓库

如果你需要整个仓库的所有文件(包括.R/.Rmd),usethis包的克隆功能非常省心——它会帮你把整个仓库同步到本地指定路径:

# 先安装包(如果没装的话)
install.packages("usethis")
library(usethis)

# 替换成目标仓库的用户名/仓库名,以及你想保存的本地路径
create_from_github("username/your-repo-name", destdir = "~/Desktop/my-github-repo")

克隆完成后,你可以用下面的代码快速筛选出所有.R和.Rmd文件:

# 列出仓库里所有.R和.Rmd文件(包括子目录)
target_files <- list.files("~/Desktop/my-github-repo", 
                           pattern = "\\.R$|\\.Rmd$", 
                           recursive = TRUE, 
                           full.names = TRUE)

# 比如读取其中一个Rmd文件
library(rmarkdown)
render(target_files[1])
方法2:用git2r包灵活操作Git仓库

如果你需要更精细的Git控制(比如指定分支、版本),git2r包是更好的选择:

install.packages("git2r")
library(git2r)

# 克隆仓库到本地
clone("https://github.com/username/your-repo-name.git", 
      local_path = "~/Desktop/my-github-repo")

# 同样筛选目标文件
target_files <- list.files("~/Desktop/my-github-repo", 
                           pattern = "\\.(R|Rmd)$", 
                           recursive = TRUE, 
                           full.names = TRUE)
方法3:不克隆整个仓库,只下载.R/.Rmd文件

如果不需要整个仓库,只想抓特定格式的文件,可以用gh包调用GitHub API来筛选并下载:

install.packages("gh")
library(gh)

# 替换成目标仓库的所有者和名称
owner <- "username"
repo <- "your-repo-name"

# 获取仓库根目录的文件列表(如果需要递归子目录,可以写个递归函数)
repo_contents <- gh("GET /repos/{owner}/{repo}/contents/", 
                    owner = owner, 
                    repo = repo)

# 筛选出.R和.Rmd文件
target_files <- Filter(function(x) grepl("\\.(R|Rmd)$", x$name), repo_contents)

# 批量下载到本地
for (file in target_files) {
  download.file(file$download_url, destfile = file$name)
}

如果仓库里有子目录,你可以扩展这个逻辑,递归遍历所有子目录来抓取文件。

方法4:直接读取文件内容到R(无需下载到本地)

要是你只是想把文件内容读进R环境,不用保存到本地,可以直接读取原始文件链接:

# 读取并运行一个R脚本
source("https://raw.githubusercontent.com/username/your-repo-name/main/your-script.R")

# 读取一个Rmd文件的内容
rmd_text <- readLines("https://raw.githubusercontent.com/username/your-repo-name/main/your-document.Rmd")
# 也可以直接渲染这个Rmd
rmarkdown::render(input = "https://raw.githubusercontent.com/username/your-repo-name/main/your-document.Rmd")

根据你的需求选合适的方法就行——如果需要完整仓库的所有文件,克隆是最方便的;如果只需要特定文件,直接下载或读取内容更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:29:54