37

在 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
4

2 回答 2

20

It means the package (In this case R) can access the package functions/objects, but the user can not without explicitly loading the tools package where as stats, graphics, etc. are loaded and ready to go for the user.

Here's an example:

sessionInfo()
file_ext("file.com")
tools::file_ext("file.com")
sessionInfo()
于 2013-02-20T20:06:13.813 回答
18

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

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

> file_ext
Error: object 'file_ext' not found

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

于 2013-02-20T22:04:15.507 回答