根据这个问题的答案: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"
如果我在收到提示后运行代码,它可以正常工作。有什么想法吗?
谢谢!
答案 0 :(得分:11)
从阅读?Startup
看来:
接下来,如果在搜索路径上找到函数.First,则执行该函数 as.First()。最后,基础包中的functionFirst.sys()是 跑。此调用需要附加指定的默认包 选项( “defaultPackages”)。
现在,installed.packages
位于 utils 包中,该包通常是默认包之一。所以当.First
被调用时它不可用。
也许尝试用installed.packages
替换utils::installed.packages
?
正如Josh所说,我的眼睛掠过直接解决这个问题的那一块,即:
请注意,当网站和用户个人资料文件仅来源时 基础包已加载,因此其他包中的对象需要 例如, utils :: dump.frames或显式加载之后 包裹有关。