检查R中已安装的软件包

时间:2012-06-28 18:13:47

标签: r r-package

根据这个问题的答案:Elegant way to check for missing packages and install them?

我正在使用以下代码确保在升级R或安装其他用户时安装了所有软件包:

list.of.packages <- c("RODBC", "reshape2", "plyr")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)

我已将它放在我的.Rprofile中的myFirst函数中,但是当我启动R时它会出现以下错误并继续启动:

Error in match(x, table, nomatch = 0L) : 
  could not find function "installed.packages"

如果我在收到提示后运行代码,它可以正常工作。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:11)

从阅读?Startup看来:

  

接下来,如果在搜索路径上找到函数.First,则执行该函数   as.First()。最后,基础包中的functionFirst.sys()是   跑。此调用需要附加指定的默认包   选项( “defaultPackages”)。

现在,installed.packages位于 utils 包中,该包通常是默认包之一。所以当.First被调用时它不可用。

也许尝试用installed.packages替换utils::installed.packages

正如Josh所说,我的眼睛掠过直接解决这个问题的那一块,即:

  

请注意,当网站和用户个人资料文件仅来源时   基础包已加载,因此其他包中的对象需要   例如, utils :: dump.frames或显式加载之后   包裹有关。