我想在R脚本的开头检查是否安装了所需的包,如果没有,就安装它们。
我想使用类似下面的内容:
RequiredPackages <- c("stockPortfolio","quadprog")
for (i in RequiredPackages) { #Installs packages if not yet installed
if (!require(i)) install.packages(i)
}
然而,这给了我错误信息,因为R试图安装一个名为'i'的包。
if (!require(i)) install.packages(get(i))
...在相关行中,我仍然收到错误消息。
有人知道怎么解决吗?
4条答案
按热度按时间tf7tbtn21#
虽然@Thomas的答案已经解决了这个问题,但我想指出
pacman
可能是一个更好但简单的选择:首次安装pacman:
然后加载软件包。Pacman会检查每个软件包是否已经安装,如果没有,会自动安装。
就是这样。
f1tvaqid2#
我觉得这很接近你想要的:
HERE是
requireNamespace
函数的源代码和说明。hi3rlvi23#
默认情况下,
library
和require
都在第一个参数上使用非标准求值。这使得它们很难在编程中使用。但是,它们都接受character.only
参数(默认值为FALSE
),可以使用该参数来获得结果:clj7thdc4#
到目前为止,我已经编写了以下函数(并将其放入一个包中),它基本上完成了@托马斯和@federico提出的任务: