我想在我的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))
...在相关行中,我仍然收到错误消息。
有人知道如何解决这个问题吗?
答案 0 :(得分:3)
尽管@ Thomas的答案已经解决了这个问题,但我想指出pacman
可能是一个更好但更简单的选择:
首先安装pacman:
install.packages("pacman")
然后加载包。 Pacman将检查每个包是否已安装,如果没有,将自动安装。
pacman::p_load("stockPortfolio","quadprog")
就是这样。
相关链接:
答案 1 :(得分:0)
默认情况下,library
和require
都会对其第一个参数使用非标准评估。这使得它们难以用于编程。但是,它们都采用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)
}