【问题标题】:Check for installed packages in R检查 R 中已安装的软件包
【发布时间】:2012-06-28 18:13:46
【问题描述】:

根据这个问题的答案: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 中的 .First 函数中,但是当我启动 R 时,它会出现以下错误并继续启动:

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

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

谢谢!

【问题讨论】:

    标签: r r-package


    【解决方案1】:

    从阅读?Startup 可以看出:

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

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

    也许尝试将installed.packages 替换为utils::installed.packages

    正如 Josh 所说,我的眼睛浏览了直接解决这个问题的文章,即:

    请注意,当网站和用户配置文件的来源只有 基础包已加载,因此其他包中的对象需要 所指的例如utils::dump.frames 或显式加载 相关包。

    【讨论】:

    • 或者(如前面?Startup 中所述,您可以使用utils::installed.packages 或首先使用require(utils) 显式加载包。
    • 太棒了。将函数引用为 utils::installed.packages 和 utils::install.packages 就可以了。谢谢乔希和乔兰!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2021-11-07
    • 2013-10-02
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多