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

有帮助吗?

解决方案

导出的符号始终可通过 :: 操作员:

zoo::index

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

zoo:::.onLoad

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

其他提示

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

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

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

library("debug", pos = .Machine$integer.max)

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

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

最后你可以随时参考zoo::index来确保你得到的是zoo中的那个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top