由于搜索路径上的名称冲突,如何取消 R 中函数的屏蔽
当我加载包 debug
来调试带有 zoo
对象的脚本时,我遇到了麻烦:来自 zoo
的函数 index
得到了由 debug
包屏蔽。如何取消屏蔽index
?一般来说,如何处理这些名称冲突问题呢?我们只是不将 debug
包与“zoo”一起使用?
When I loaded package debug
to debug a script with zoo
objects, I got trouble: function index
from zoo
got masked by debug
package. How can I unmask index
? In general, how to deal with these name colliding problems? We just do not use debug
package with `zoo'?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以分离具有屏蔽功能的包,然后重新附加它。它将在搜索路径中重新获得优先权:
将来,如果你想附加一个包,同时防止它屏蔽其他函数,你可以用任意大的数字指定它在搜索路径中的位置:
You can detach the package which has masked functions and then reattach it. It will regain precedence in the search path:
In the future, if you want to attach a package while preventing it from masking other functions, you can specify its position in the search path with an arbitrary large number:
导出的符号始终可以使用
::
运算符进行识别:未在命名空间中声明的隐藏函数仍然可以使用
:::
(三冒号)进行访问,示例如下即使它没有导出,你也可以看到。
Exported symbols are always identifiable with the
::
operator:Hidden functions not declared in the namespace can still be accessed using
:::
(triple-colon), and example would bewhich you can see even though it is not exported.
它仅对您进行屏蔽,但对动物园没有屏蔽,因此当动物园函数尝试使用索引时,它仍然会首先找到自己的索引。
Zoo 还有一个 time.zoo 方法,因此如果 z 是一个 Zoo 对象,您可以使用 time(z) 代替 index(z)。
最后你可以随时参考zoo::index来确保你得到的是zoo中的那个。
Its only masked to you but its not masked to zoo so when a zoo function tries to use index it will still find its own index first.
zoo also has a time.zoo method so if z is a zoo object you can use time(z) in place of index(z).
Finally you can always refer to zoo::index to make sure you get the one in zoo.