【问题标题】:Preventing repeated package installation, or pre installing packages in R防止重复安装包,或在 R 中预安装包
【发布时间】:2018-05-13 08:17:32
【问题描述】:

我有一个使用 rpy2 从 python 调用的 R 脚本。它使用 dplyr、doBy 和 ggplot2。该脚本具有这 3 个软件包的 install.packages 命令。即使软件包已经安装,它仍然会下载、构建和安装它们,这非常耗时。有没有办法让它只在尚未安装软件包的情况下进行安装?

另外,我在 docker 容器中运行,所以在容器实例化后,脚本第一次运行时包并不存在。有没有办法预加载包,在这种情况下,我不需要这些包的 install.packages 命令,我的上述问题将变得毫无意义。

【问题讨论】:

  • 你能分享你的 dockerfile 吗?您正在使用哪个映像以及在构建映像时如何从 install.packages 安装软件包?

标签: r docker rpy2


【解决方案1】:

我总是用:

if (!require(package)) install.packages("package")

因此,如果该软件包在库中不可用,它将被安装。

【讨论】:

    【解决方案2】:
    install.packages( setdiff(required_packages, installed.packages()[,"Package"]) )  
    

    如果您将required_packages 定义为您需要的软件包名称的字符向量,则此行将仅安装您当前没有的软件包。

    所以对于你的情况:

    required_packages <- c("dplyr", "doBy", "ggplot2")
    install.packages( setdiff(required_packages, installed.packages()[,"Package"]) )  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多