处理 R 中冲突的命名空间(不同包中的相同函数名):重置包命名空间的优先级

Posted

技术标签:

【中文标题】处理 R 中冲突的命名空间(不同包中的相同函数名):重置包命名空间的优先级【英文标题】:Dealing with conflicting namespaces in R (same function names in different packages): reset precedence of a package namespace 【发布时间】:2016-07-19 17:05:43 【问题描述】:

R 中来自不同包的命名空间之间的名称冲突可能很危险,不幸的是,package::function 的使用在 R 中没有得到推广......

难道没有一个函数可以重置包命名空间相对于当前加载的所有其他命名空间的优先级吗? 当然我们可以detach 然后重新加载包,但是没有其他更实用(单命令)的方式吗?

因为我经常在我的 R 会话中遇到许多包和名称冲突,所以我使用以下函数来做到这一点:

set_precedence <- function(pckg) 
  pckg <- deparse(substitute(pckg))
  detach(paste("package", pckg, sep = ":"), unload=TRUE, character.only=TRUE)
  library(pckg, character.only=TRUE)

# Example
set_precedence(dplyr)

没有内置方法可以在单个命令中实现这一点? 或者一种不暗示detaching 和重新加载包的方式,以防加载繁重,并直接在命名空间上工作?

【问题讨论】:

【参考方案1】:

我建议看看conflicted 包。

【讨论】:

【参考方案2】:

包名前加双冒号:&lt;package&gt;::&lt;function&gt;()

例如:

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

更多的打字,但现在我发现了这个,我对使用 R 感到不那么焦虑了。

【讨论】:

以上是关于处理 R 中冲突的命名空间(不同包中的相同函数名):重置包命名空间的优先级的主要内容,如果未能解决你的问题,请参考以下文章

java常识

Java 包(package)

Java 包(package)

Java 包(package)

Java 包(package)

Java 包(package)