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