找回密码
 注册
查看: 5825|回复: 2

R语言的命名空间

[复制链接]
发表于 2011-1-22 22:01:54 | 显示全部楼层 |阅读模式
包有自己的命名空间(namespaces),并且现在所有基本的和推荐的的包都依赖
于包datasets。命名空间主要三个作用:它们允许包的作者隐藏函数和数据,即只允
许内部用户使用,它们防止函数在一个用户(或其他包的作者)使用相同名字时被破
坏,它们提供了一种访问特定包的某个对象的方法。
例如,t() 是R 里面的转置函数,但是用户可能会定义一个函数叫t。命名空间
防止用户定义的函数居先和破坏矩阵转置的函数。
有两个操作符和命名空间相关。双冒号操作符:: 选择一个特定命名空间得到
的函数定义。在上面的例子中,转置函数总是可以通过base::t 使用,因为它是在
包base 中定义的。一个包中的函数可以通过这种方式访问。
三冒号操作符::: 可能会出现在一些R 代码中:它有点像双冒号操作符,但可以
访问隐藏对象。用户还可能使用函数getAnywhere(),它会搜索多重包。
包常常是包之间依赖的(inter-dependent),载入其中一个可能会引起其他包的
自动载入。上面提到的冒号操作符同样会引起相关包的自动载入。当有命名空间的包
自动载入时,它们不会被自动加入搜索列表。
回复

使用道具 举报

发表于 2016-5-3 02:49:56 | 显示全部楼层
它有点像双冒号操作符,但可以
访问隐藏对象

刚略读了下Double Colon and Triple Colon Operators,还是不明白这英文版... 经以上说明就明白了... 而这句
It is typically a design mistake to use ::: in your code since the corresponding object has probably been kept internal for a good reason. Consider contacting the package maintainer if you feel the need to access the object for anything but mere inspection.
指的是啥呢?是不是会修改到该程序包的源代码呢?

刚略读了一下NAMESPACE... 咱就知道 :: 怎么用,但就不晓得 ::: 的用途了?(还有就是怎么隐藏system environment呢?)
回复 支持 反对

使用道具 举报

发表于 2016-5-3 02:50:06 | 显示全部楼层
它有点像双冒号操作符,但可以
访问隐藏对象

刚略读了下Double Colon and Triple Colon Operators,还是不明白这英文版... 经以上说明就明白了... 而这句
It is typically a design mistake to use ::: in your code since the corresponding object has probably been kept internal for a good reason. Consider contacting the package maintainer if you feel the need to access the object for anything but mere inspection.
指的是啥呢?是不是会修改到该程序包的源代码呢?

刚略读了一下NAMESPACE... 咱就知道 :: 怎么用,但就不晓得 ::: 的用途了?(还有就是怎么隐藏system environment呢?)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 18:39 , Processed in 0.025334 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表