【问题标题】:What determines what dependent packages get loaded into the work space?什么决定了哪些依赖包被加载到工作空间中?
【发布时间】:2019-01-10 19:28:27
【问题描述】:

在我编写的包中,在描述文件中,这里有一些导入:

Imports: jsonlite,
    tibble,
    shiny,
    ggplot2,
    plotly (>= 4.5.6.9000),
    dplyr,
    purrr,
    lubridate

但是当我像这样加载我的包时:

devtools::load_all()

上面只有一些包会附加到工作区。例如,dplyr 已附加,但 plotly 未附加。

当“my_package”被加载时,是什么决定了描述文件的“import”语句中的哪些包被加载到工作区

【问题讨论】:

  • 在你加载你的包之前你有没有加载dplyr?我猜它之前加载过。 Imports 部分不应附加任何内容,Depends 部分将。见stackoverflow.com/questions/8637993/…
  • @MrFlick 不,我的 Rstudio 会话很新鲜。
  • 但是你有 Rstudio 在启动时自动为你加载包吗?在运行 library(my_package) 之前,请检查您的 sessionInfo()。你的包有onLoad 函数吗?
  • @MrFlick 我搜索了 my_package 并且“onLoad”没有出现。 sessionInfo() 显示在 library(my_package) 之前仅附加了 stats、graphics、grDevices、utils、datasets、methods 基础包。实际上,目前我只是运行这个“devtools::load_all()”来加载我正在开发的包。不确定这是否会导致它加载那些额外的包。但它不应该。根据文档,“devtools::load_all()”应该模拟“library(my_package)”
  • 您的问题可能得到了答案。在本网站上将其标记为“已接受”是有礼貌的(您会看到如何),或者让 cmets 解释它为什么不满足您的需求。

标签: r


【解决方案1】:

“加载”和“附加”是有区别的。被加载意味着包在内存中,所以你包中的函数可以调用其中的函数。被附加意味着它在搜索列表中,因此用户可以调用其中的函数。

如果附加了一个包,它也必须被加载,但可以加载包而不显示在搜索列表中。

如果你使用像purrr::map这样的双冒号符号,那么R会检查purrr是否被加载,如果没有加载它,但它不会将它添加到搜索列表中。第二次这样调用时就不需要加载它了,因为包通常会在加载一次后保持加载状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2016-09-16
    • 2021-09-30
    相关资源
    最近更新 更多