R安装包而不加载.Rprofile

时间:2018-03-15 07:54:02

标签: r

我想确保在没有干预的情况下安装最常用的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')
  }
}

有几个问题:

  1. 在安装软件包时运行install.packages似乎从repo下载软件包(或元数据?),并尝试重新安装
  2. 我使用require来检查软件包是否已经安装,但是还有加载软件包的副作用。我不希望任何包装加载发生,只安装(如果需要)
  3. 如何进行此设置以便1)如果已经安装了软件包,并且2)在启动时没有加载软件包?我认为最终我正在寻找的是一种检查包是否安装而无需加载的方法

    我已经考虑了两种方法,但两种方法都不理想,并且希望避免将它们作为解决方案:

    • 使用像Packrat这样的包管理器。我并不是本质上为我的所有项目创建托管虚拟环境的粉丝。在我的机器上拥有相同包文件的多个副本将占用不必要的空间
    • 此问题的常见解决方案(例如Elegant way to check for missing packages and install them?)是检查是否在installed.packages()中找到了包。但如果你有很多已安装的软件包,那么这最终会非常缓慢(在启动时尤其是一个问题)

    我已经看到很多关于此的问题,但我见过的所有解决方案都是使用require加载包或对installed.packages()进行检查。还有另一种方式吗?

0 个答案:

没有答案