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

Mad*_*Seb 32 r package

在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
Run Code Online (Sandbox Code Playgroud)

Mar*_*gan 17

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

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

> file_ext
Error: object 'file_ext' not found
Run Code Online (Sandbox Code Playgroud)

尽管如此,tools::file_ext无论工具是否在搜索路径上,都可以访问它们.


Tyl*_*ker 16

这意味着包(在本例中为R)可以访问包函数/对象,但是用户无法在没有明确加载工具包的情况下加载统计数据,图形等并为用户准备好.

这是一个例子:

sessionInfo()
file_ext("file.com")
tools::file_ext("file.com")
sessionInfo()
Run Code Online (Sandbox Code Playgroud)