在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)
归档时间: |
|
查看次数: |
4633 次 |
最近记录: |