是否可以通过在函数调用中显式引用包来管理R包冲突



我不喜欢在函数调用或命名空间冲突中出现R包冲突。例如,plyr和dplyr具有相同名称的函数,因此如果同时加载了它们,则需要知道它们是哪些函数,以便可以适当地附加和分离包。当然,在这个例子中,dplyr旨在取代plyr,这就是冲突出现的原因,但假设任何数量的包都可能发生这种情况。真是一场噩梦!这在Python中不是问题,因为函数调用的前缀是导入的包的名称/别名,例如pd.melt()

所以,我的问题是:在R中有等效的方法吗?是否可以通过在函数调用中显式引用包来管理包冲突?

我看到六年前有人在这里问过基本上相同的问题,但这个问题仍然没有解决。提供的唯一答案是查看conflicted软件包。这是一个开始,为冲突提供了透明度,但您必须深入了解软件包,才能找到比这更好的东西(更新:请参阅下面的评论,以查找该软件包的哪些功能对此问题最有用的参考资料(。

更新

评论中有许多解决方案,包括本帖中的解决方案。但是,虽然那篇帖子回答了我的问题,但它并没有问它,这可能是我在搜索中没有找到它的部分原因。它首先假设您已经知道使用正确前缀语法的快速而肮脏的解决方案。因此,最好将这篇帖子作为非重复的帖子留给未来的搜索者。

只需在包名前面加一个双冒号:

<package>::<function>()

例如:

ggplot2::ggplot(data=data, ggplot2::aes(x=x)) +
ggplot2::geom_histogram()

最新更新