我想确保在没有干预的情况下安装最常用的R软件包。这很有用,因为我在多台计算机上工作,经常重新格式化我的计算机,有时会有新的包,我想添加到这个"常用的"列表并且不希望必须在每台计算机上手动安装它。基本上,我只是希望R在我启动时为我安装丢失的软件包。
目前,每当我启动R时,我都会使用.Rprofile
安装我的包列表。它包含以下内容:
packages <- c("list", "of", "packages")
for (p in packages) {
if(!suppressWarnings(require(p, character.only = TRUE))){
utils::install.packages(p, repos='http://cran.us.r-project.org')
}
}
有几个问题:
install.packages
似乎从repo下载软件包(或元数据?),并尝试重新安装require
来检查软件包是否已经安装,但是还有加载软件包的副作用。我不希望任何包装加载发生,只安装(如果需要)如何进行此设置以便1)如果已经安装了软件包,并且2)在启动时没有加载软件包?我认为最终我正在寻找的是一种检查包是否安装而无需加载的方法
我已经考虑了两种方法,但两种方法都不理想,并且希望避免将它们作为解决方案:
installed.packages()
中找到了包。但如果你有很多已安装的软件包,那么这最终会非常缓慢(在启动时尤其是一个问题)我已经看到很多关于此的问题,但我见过的所有解决方案都是使用require
加载包或对installed.packages()
进行检查。还有另一种方式吗?