在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
答案 0 :(得分:16)
这意味着包(在本例中为R)可以访问包函数/对象,但是用户无法在没有显式加载工具包的情况下加载统计数据,图形等并为用户准备好。
以下是一个例子:
sessionInfo()
file_ext("file.com")
tools::file_ext("file.com")
sessionInfo()
答案 1 :(得分:15)
当评估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
访问它们。