我有一个与不同计算机上的多个用户共享的R脚本。它的一行包含install.packages("xtable")
命令。
问题是,每次有人运行脚本时,R显然会花费大量时间重新安装包(实际上需要花费一些时间,因为实际情况下有几个包的向量)。
如何才能先检查软件包是否已安装,然后只对未安装的软件包运行install.packages()
?
发布于 2012-02-18 21:48:06
试试:require("xtable")
或"xtable" %in% rownames(installed.packages())
发布于 2014-04-25 15:00:56
如果你想尽可能简单地做到这一点:
packages <- c("ggplot2", "dplyr", "Hmisc", "lme4", "arm", "lattice", "lavaan")
install.packages(setdiff(packages, rownames(installed.packages())))
将第一行中列出的包替换为运行代码所需的包,瞧!
注意:由于Artem下面的评论,编辑后删除了条件包装器。
发布于 2012-02-18 22:01:10
这是我经常使用的一个函数,用于检查包,否则安装它,然后再次加载:
pkgTest <- function(x)
{
if (!require(x,character.only = TRUE))
{
install.packages(x,dep=TRUE)
if(!require(x,character.only = TRUE)) stop("Package not found")
}
}
其工作方式类似于pkgTest("xtable")
。它只有在设置了镜像的情况下才能工作,但您可以在require
调用中输入它。
https://stackoverflow.com/questions/9341635
复制相似问题