как скачать (без установки) пакет с github - PullRequest
0 голосов
/ 06 февраля 2019

Можно ли в любом случае загрузить zip-пакет с github и не установить его?

Например, запустить:

devtools::install_github("tidyverse/tidyr")

загружает и устанавливает сразу.Есть ли что-нибудь эквивалентное

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

для пакетов github?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Если вы хотите загрузить GitHub-репозиторий (в данном случае tidyr пакет), вы можете использовать download.file и скопировать ссылку в GitHub «Клонировать или загрузить», щелкнув по ней правой кнопкой мыши.

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)
0 голосов
/ 06 февраля 2019

Я думаю, что вы можете использовать:

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 не экспортируется, поэтому ее использование не является «официальным».

...