【问题标题】:library() function fails to load multiple packageslibrary() 函数无法加载多个包
【发布时间】:2017-11-21 21:12:36
【问题描述】:

当我将 janitor 包与其他包一起包含时,它没有加载。

图书馆(MASS、插入符号、stepPlr、看门人)

库中的错误(MASS、插入符号、stepPlr、管理员):找不到对象“管理员”

当我只使用 janitor 包单独运行该命令时,它被加载到会话中;没有错误

> library(janitor)
Warning message:
package ‘janitor’ was built under R version 3.3.3 

一次包含 x 个包裹有什么限制吗?还是我的 RStudio 有问题?

【问题讨论】:

  • 如果您阅读了library 的帮助页面,它会一次只提到 一个 包。它使用单数 the name of a package, given as a name or literal character string, or a character string,而不是复数。
  • 您可以使用library_all = function(...) sapply(list(...), library) 之类的方法创建一个执行此操作的函数。将此添加到您的.Rprofile,它可用于您的所有脚本。

标签: r


【解决方案1】:

pacman 包中的函数 p_load 允许像这样列出多个包,如果没有的话,将安装它们:

library(pacman)
p_load(MASS, caret, stepPlr, janitor)

这不仅对用户友好,而且还提高了跨多个用户或环境运行相同脚本的可重复性。

【讨论】:

    【解决方案2】:

    library() 函数并不意味着加载多个库,更好的方法是创建一个包列表,并使用require() 检查它们是否已安装,如果没有安装它们。请参见下面的示例:

    requiredPackages <- c("MASS", "caret", "stepPlr", "janitor")
    
    
    ipak <- function(pkg){
            new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
            if (length(new.pkg))
                    install.packages(new.pkg, dependencies = TRUE)
            sapply(pkg, require, character.only = TRUE)
    }
    
    ipak(requiredPackages)
    

    【讨论】:

    • 谢谢。这样可行。 :)
    • @Wwalk 乐于助人。祝你有美好的一天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多