将包命名空间的优先级重置为R中最近加载的包

时间:2016-03-31 09:59:34

标签: r packages

R中来自不同包的名称空间之间的名称冲突可能很危险,遗憾的是,package::functionR的使用并未一概而论......

是否有一个函数可以重置包名称空间优先于当前加载的所有其他名称空间? 当然我们可以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)

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

2 个答案:

答案 0 :(得分:0)

我建议您看一下conflicted软件包。

答案 1 :(得分:0)

使用双冒号作为软件包名称的前缀:<package>::<function>()

例如:

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

更多的打字方式,但是现在我发现使用R时,我的焦虑程度降低了。