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