【问题标题】:In R, what does "loaded via a namespace (and not attached)" mean?在 R 中,“通过命名空间加载(而不是附加)”是什么意思?
【发布时间】:2013-02-05 23:28:10
【问题描述】:

在 R 中,在sessionInfo()“通过命名空间加载(而不是附加)” 是什么意思?

编辑

例如:

> sessionInfo()

R version 2.15.2 (2012-10-26)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

---->>>> loaded via a namespace (and not attached):
---->>>> [1] tools_2.15.2

【问题讨论】:

  • 它是那些被其他包suggested的包,并且没有加载(用户直接访问,我应该添加)。

标签: r package


【解决方案1】:

这意味着包(在本例中为 R)可以访问包函数/对象,但用户不能不显式加载工具包,因为这些工具包已加载并准备好供用户使用。

这是一个例子:

sessionInfo()
file_ext("file.com")
tools::file_ext("file.com")
sessionInfo()

【讨论】:

    【解决方案2】:

    当评估library(foo) 时,R 首先将包 foo 加载到内存中,然后将包附加到 search() 路径。其他操作,例如loadNamespace("foo")foo::fun,或者当第三方指示它从 foo 导入符号时,加载包但不要将其附加到搜索路径。由于 R 是一种动态语言,每个函数调用都涉及对可用符号的遍历以找到第一个匹配的符号。通过分离附加和加载操作并因此限制要搜索的符号数量,它很有效,并且避免了不必要的名称冲突。

    在上面的示例中,工具包已加载,但(尚未)附加。当在 R 命令提示符下键入符号时,R 首先在全局名称空间中查找符号(search() 返回的第一个元素,如果未找到,则在 search() 的后续元素中找到。由于未附加工具,工具中的符号不​​解析。

    > file_ext
    Error: object 'file_ext' not found
    

    不过,无论工具是否在搜索路径上,都可以通过 tools::file_ext 访问它们。

    【讨论】:

    • 加载的命名空间和未加载的命名空间之间是否存在差异,因为两者都可以使用显式的 packagename:function 调用函数
    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多