如何从github下载(无安装)软件包

时间:2019-02-06 15:14:32

标签: r devtools

反正有从github下载压缩包而不安装吗?

例如运行:

devtools::install_github("tidyverse/tidyr")

立即下载并安装。有什么等于

download.packages("tidyr", destdir = "path")

对于github包?

2 个答案:

答案 0 :(得分:1)

如果要下载GitHub存储库(在这种情况下为tidyr包),可以使用download.file并通过右键单击GitHub复制或下载按钮来复制链接。< / p>

download.file(url = "https://github.com/tidyverse/tidyr/archive/master.zip",
              destfile = "tidyr.zip")

如果您希望函数执行此操作,则可能的解决方案是(它将下载到当前工作目录中):

download_git <- function(repo_name, repo_url, install = FALSE){

   url_git <- paste0(file.path(repo, "archive", "master"), ".zip")
   download.file(url = url_git,
                 destfile = paste0(repo_name, "-master.zip"))

   if(install) {

      unzip(zipfile = paste0(repo_name, "-master.zip"))

      devtools::install(paste0(repo_name,"-master"))    
   }
}

这是一个使用方法的示例(带有安装选项):

download_git(repo_name = "tidyr", 
             repo_url = "https://github.com/tidyverse/tidyr", 
             install = TRUE)

答案 1 :(得分:0)

我认为您可以使用:

repo <- "tidyverse/tidyr"
download.file(
  url = paste0("https://api.github.com/repos/", repo, "/tarball/master"), 
  destfile = "~/tidyr.tar.gz"
)

如果要通过软件包进行操作,则可以使用remotes

x <- list(host = "api.github.com", repo = "tidyr", username = "tidyverse", ref = "master")
tmpFile <- remotes:::remote_download.github_remote(x)
file.rename(tmpFile, "~/tidyr.tar.gz")

这实际上等同于上述内容。请注意,remote_download.github_remote函数不会导出,因此不会使用它的“官方”方式。