R包管理器安装一个手工制作的列表CRAN包

时间:2016-07-01 23:38:30

标签: r package-managers cran

我正在寻找与pip install -r requirements.txt类似的内容,但对于R.如果我在文件中有一个CRAN包列表,是否有一些包管理器会继续安装它们?我已经看过一些像packrat这样的潜在解决方案,但他们明确表示不会手动修改需求列表,这就是我想做的事情

1 个答案:

答案 0 :(得分:3)

您可以编写一个包含pacman的简单脚本来实现此目的。

例如,如果您有一个文件,每行列出一个包:

<强> input.txt中

dplyr
ggplot2
etc

您可以使用类似此脚本的内容来安装其中的所有请求:

<强> installer.R

#!/usr/bin/env Rscript
library('pacman')

infile <- commandArgs(trailingOnly=TRUE)[1]

# check to make sure specified file exists
if (!file.exists(infile)) {
    stop("Invalid filepath specified...")
}

# get list of packages
packages <- readLines(file(infile))
print(sprintf("Installing: %s", paste0(packages, collapse='\n')))

suppressWarnings(p_install(packages, character.only=TRUE))

print("Done!")

<强>用法

installer.R <packages.txt>

pacman的优点是它能够从多个来源(cran,bioconductor,github等)安装包,也可用于指定特定的包版本。您可以想象然后扩展这个简单的脚本来解析包含版本要求的更复杂的列表。