10

当我加载包debug以调试带有zoo对象的脚本时,我遇到了麻烦:函数indexfromzoodebug包掩盖了。我怎样才能解开面具index?一般来说,如何处理这些名称冲突问题?我们只是不使用debug带有“动物园”的包吗?

4

3 回答 3

12

您可以卸载具有屏蔽功能的包,然后重新加载它。它将在搜索路径中重新获得优先权:

unloadNamespace("zoo")
library("zoo")

以后,如果你想加载一个包,同时防止它屏蔽其他功能,你可以用任意大的数字指定它在搜索路径中的位置:

library("debug", pos = .Machine$integer.max)
于 2013-05-08T21:10:32.643 回答
10

操作员始终可以识别导出的符号::

zoo::index

未在命名空间中声明的隐藏函数仍然可以使用:::(三冒号)访问,例如

zoo:::.onLoad

即使没有导出,您也可以看到。

于 2010-07-13T21:13:43.753 回答
4

它只对您屏蔽,但对动物园没有屏蔽,因此当动物园功能尝试使用索引时,它仍然会首先找到自己的索引。

zoo 也有一个 time.zoo 方法,所以如果 z 是一个 zoo 对象,您可以使用 time(z) 代替 index(z)。

最后,您可以随时参考 zoo::index 以确保您在动物园中获得了那个。

于 2010-07-14T00:28:19.560 回答