包有自己的命名空間(namespaces),並且現在所有基本的和推薦的
的包都依賴于包 datasets。命名空間主要三個作用:
它們允許包的作者隱藏函數和資料,即只允許內部用戶使用,
它們防止函數在一個用戶(或其他包的作者)使用
相同名字時被破壞,它們提供了一種
訪問特定包的
某個物件的方法。
例如,t() 是 R 裏面的轉置函數,但是用戶
可能會定義一個函數叫 t。命名空間
防止用戶定義的函數居先和破壞
矩陣轉置的函數。
有兩個操作符和命名空間相關。雙冒號操作符
:: 選擇一個特定命名空間得到的函數定義。
在上面的例子中,轉置函數總是可以通過
base::t 使用,因為它是在包 base 中定義的。
一個包中的函數可以通過這種方式
訪問。
三冒號操作符 ::: 可能會出現在一些 R 代碼中:
它有點像雙冒號操作符,但可以訪問隱藏物件。
用戶還可能使用函數 getAnywhere(),
它會搜索多重包。
包常常是包之間依賴的(inter-dependent),載入其中一個可能會引起其他包 的自動載入。上面提到的冒號操作符同樣會引起 相關包的自動載入。當有命名空間的包自動載入時, 它們不會被自動加入 搜索列表。