防止重复安装软件包,或者预先在R中安装软件包

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

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

我总是使用:

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

所以如果软件包在库中不可用,它将被安装。

 install.packages( setdiff(required_packages, installed.packages()[,"Package"]) ) 

如果将required_packages定义为required_packages包的名称的字符向量,则此行只会安装当前不具有的包。

所以对于你的情况:

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