一个从CRAN上批量下载R包的函数
2018-11-12 本文已影响11人
董八七
服务器没有连外网,只能本地安装R包。有些包需要依赖包,层层递进的话有时安装一个包需要先安装几十个依赖包。从CRAN里一个个下载比较繁琐,于是写了一个函数来解决,只需要包的名字作为参数。用的是清华源,下载速度很可观。
library(tidyverse)
library(rvest)
#' Title Download R packages from cran
#'
#' @param pack_nam
#'
#' @return
#' @export
#'
#' @examples
#' c("qqman", "lars", "ncvreg", "coin", "bigmemory") %>% lapply(downlaod_rpack)
downlaod_rpack <- function(pack_nam) {
pack_url <- paste0("https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/", pack_nam,"/index.html") %>%
readLines() %>% str_extract("src\\/contrib.*tar.gz") %>% .[!is.na(.)] %>% str_split(" ") %>% unlist() %>% .[2]
download.file(paste0("https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/contrib/", pack_url), destfile = paste0(pack_url), mode = "wb")
}