0
兩次現在我遇到了base
函數被其他包掩蓋的問題。有沒有辦法將其他軟件包加載到庫中,但不允許它們屏蔽base
軟件包?保持基礎包不被掩蓋
兩次現在我遇到了base
函數被其他包掩蓋的問題。有沒有辦法將其他軟件包加載到庫中,但不允許它們屏蔽base
軟件包?保持基礎包不被掩蓋
一般來說,使用軟件包總是可以使用,而不必將其名稱空間附加到搜索路徑。附加而不是加載是導致具有相同名稱的功能相互衝突的原因。也就是說,不是
library(pkg)
pkgfunc(a, b, ...)
做
loadNamespace("pkg")
pkg::pkgfunc(a, b, ...)
其中::
操作手段來調用從給定的命名空間中導出的函數。你可能會遇到問題,但他們應該很少。
對於來自其他語言的程序員,這比每次想要使用包時調用library()
的R中的慣例更爲熟悉。 (我確實覺得有點奇怪,在R製作包名稱空間強制處理這個問題之後的幾年中,人們仍然會將每個包加載到全局環境中。)
如果你不想這樣做,那麼你可以用base::
代替base
功能的前綴。這是對基本包中的函數的明確引用,因此將忽略具有相同名稱的其他函數。
base::sum(1:10)
base::list(a=1, b=2, c=3)
謝謝你這樣的一個綜合性答案。爲什麼不在每次加載包時都使用前綴而不是從名稱空間導出(因爲似乎您必須先使用前綴)? – Bonono