如有必要,自动安装R中的软件包列表

时间:2015-03-12 07:46:35

标签: r

我想在我的R脚本的开头检查是否已安装所需的软件包,如果没有,则安装它们。

我想使用以下内容:

RequiredPackages <- c("stockPortfolio","quadprog")
for (i in RequiredPackages) { #Installs packages if not yet installed
    if (!require(i)) install.packages(i)
}

然而,这给了我错误消息,因为R试图安装一个名为&#39; i&#39;的软件包。相反,我使用...

if (!require(i)) install.packages(get(i))

...在相关行中,我仍然收到错误消息。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

尽管@ Thomas的答案已经解决了这个问题,但我想指出pacman可能是一个更好但更简单的选择:

首先安装pacman:

install.packages("pacman")

然后加载包。 Pacman将检查每个包是否已安装,如果没有,将自动安装。

pacman::p_load("stockPortfolio","quadprog")

就是这样。

相关链接:

  1. pacman GitHub page
  2. Introduction to pacman

答案 1 :(得分:0)

默认情况下,libraryrequire都会对其第一个参数使用非标准评估。这使得它们难以用于编程。但是,它们都采用character.only参数(默认为FALSE),您可以使用它来实现结果:

RequiredPackages <- c("stockPortfolio","quadprog")
for (i in RequiredPackages) { #Installs packages if not yet installed
    if (!require(i, character.only = TRUE)) install.packages(i)
}