当我加载包debug
来调试带有zoo
个对象的脚本时,我遇到了麻烦:来自index
的{{1}}函数被zoo
包掩盖了。如何取消屏蔽debug
?一般来说,如何处理这些名称冲突问题?我们只是不将index
包与`zoo'一起使用?
答案 0 :(得分:11)
您可以卸载具有屏蔽功能的软件包,然后重新加载它。它将在搜索路径中重新获得优先级:
unloadNamespace("zoo")
library("zoo")
将来,如果要加载包,同时阻止其屏蔽其他功能,可以在搜索路径中使用任意大数字指定其位置:
library("debug", pos = .Machine$integer.max)
答案 1 :(得分:10)
导出的符号始终可以通过::
运算符识别:
zoo::index
仍然可以使用:::
(三重冒号)访问命名空间中未声明的隐藏函数,例如
zoo:::.onLoad
即使没有导出也可以看到。
答案 2 :(得分:4)
它只是掩盖了你,但它没有掩盖到动物园所以当一个动物园函数试图使用索引时,它仍然会首先找到它自己的索引。
zoo还有一个time.zoo方法,所以如果z是一个zoo对象,你可以使用time(z)代替index(z)。
最后你总是可以参考zoo :: index来确保你在动物园里找到它。