由于搜索路径上的名称冲突,如何在R中取消屏蔽函数

时间:2010-07-13 21:08:39

标签: r package search-path name-collision

当我加载包debug来调试带有zoo个对象的脚本时,我遇到了麻烦:来自index的{​​{1}}函数被zoo包掩盖了。如何取消屏蔽debug?一般来说,如何处理这些名称冲突问题?我们只是不将index包与`zoo'一起使用?

3 个答案:

答案 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来确保你在动物园里找到它。