R:你叫什么叫::和:::运算符,它们有什么不同?

时间:2017-01-11 03:18:59

标签: r operators terminology

我想知道:::::运算符的功能在R中是如何不同的。

然而,我无法弄清楚这些运营商的名称是什么,因此谷歌或搜索引擎优化搜索并未证明有用。当我在R中尝试?::时,我也会收到错误。

因此...

  1. 所谓的:::::运营商是什么?

  2. :::::有何不同? (即完全各自做什么)?

1 个答案:

答案 0 :(得分:8)

事实证明,有一种独特的方式来访问运营商的帮助信息,例如这些冒号:在运营商周围添加引号。 [例如,?'::'help(":::") ]

  • 此外,代替引号,反向标记(即“)”也有效。

双结肠操作员和三重结肠操作员

问题的答案可以在“Double Colon和Triple Colon Operators”的帮助页面找到(参见here)。

  

对于包pkg,pkg :: name返回命名空间pkg中导出的变量名的值,而pkg ::: name返回 internal 的值变量名。如果在调用之前未加载包命名空间,则将加载包命名空间,但包不会附加到搜索路径。

通过检查每个代码可以看出差异:

> `::`
function (pkg, name) 
{
    pkg <- as.character(substitute(pkg))
    name <- as.character(substitute(name))
    getExportedValue(pkg, name)
}
<bytecode: 0x00000000136e2ae8>
<environment: namespace:base>

> `:::`
function (pkg, name) 
{
    pkg <- as.character(substitute(pkg))
    name <- as.character(substitute(name))
    get(name, envir = asNamespace(pkg), inherits = FALSE)
}
<bytecode: 0x0000000013482f50>
<environment: namespace:base>

:: 调用getExportedValue(pkg, name)在包名称空间中返回导出变量name 的值。

::: 调用get(name, envir = asNamespace(pkg), inherits = FALSE),在包的Namespace环境中搜索对象name返回内部的值变量name

那么,命名空间究竟是什么

这个site很好地解释了R中命名空间的概念。重要的是:

  

顾名思义,名称空间为“名称”提供了“空格”。它们提供了查找与名称关联的对象的值的上下文。

相关问题