防止重复安装包,或在R中预安装包

防止重复安装包,或在R中预安装包,r,docker,rpy2,R,Docker,Rpy2,我有一个R脚本,我使用rpy2从python调用它。它使用dplyr、doBy和ggplot2。该脚本为这3个软件包提供了install.packages命令。即使软件包已经安装,它仍然下载、构建和安装它们,这非常耗时。如果软件包尚未安装,是否有办法让它只进行安装 另外,我在docker容器中运行,因此在容器实例化之后,脚本第一次运行时包就不在那里了。是否有办法预加载包,在这种情况下,我不需要这些包的install.packages命令,我的上述问题将变得毫无意义 install.package

我有一个R脚本,我使用rpy2从python调用它。它使用dplyr、doBy和ggplot2。该脚本为这3个软件包提供了install.packages命令。即使软件包已经安装,它仍然下载、构建和安装它们,这非常耗时。如果软件包尚未安装,是否有办法让它只进行安装

另外,我在docker容器中运行,因此在容器实例化之后,脚本第一次运行时包就不在那里了。是否有办法预加载包,在这种情况下,我不需要这些包的install.packages命令,我的上述问题将变得毫无意义

install.packages( setdiff(required_packages, installed.packages()[,"Package"]) )  
如果将
required\u packages
定义为所需软件包名称的字符向量,此行将只安装当前没有的软件包

因此,对于您的情况:

required_packages <- c("dplyr", "doBy", "ggplot2")
install.packages( setdiff(required_packages, installed.packages()[,"Package"]) )  
required\u软件包我总是使用:

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

因此,如果程序包在库中不可用,它将被安装。

您可以共享您的dockerfile吗?您正在使用哪个映像,以及在构建映像时如何从install.packages安装包?