当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《R:你叫什么叫::和:::运算符,它们有什么不同?》经验,为你挑选了1个好方法。



1> theforesteco..:

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

此外,代替引号,反向标记(即,`)也起作用.


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

问题的答案可以在"Double Colon和Triple Colon Operators"的帮助页面上找到(见这里).

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

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

> `::`
function (pkg, name) 
{
    pkg <- as.character(substitute(pkg))
    name <- as.character(substitute(name))
    getExportedValue(pkg, name)
}



> `:::`
function (pkg, name) 
{
    pkg <- as.character(substitute(pkg))
    name <- as.character(substitute(name))
    get(name, envir = asNamespace(pkg), inherits = FALSE)
}


:: calls getExportedValue(pkg, name),返回name包名称空间中导出变量的值.

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


那么,命名空间到底是什么?

该站点很好地解释了R中命名空间的概念.重要的是:

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


这意味着你可以做一些荒谬的事情,比如`\`:: \`("stats","sd")(1:5)`这相当于`sd(1:5)`
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有