在包中使用 ggplot2 时讨厌的 ggplot2 命名空间冲突

Pesky ggplot2 namespace conflict when using ggplot2 in package

我正在为 qmethod R 包做贡献,我刚刚编写了一个创建一堆 ggplot2 对象的函数。

该函数工作正常,但构建和 R CMD Check 警告我:

replacing previous import by ‘ggplot2::%+%’ when loading ‘qmethod’

我查看了 SE posts and @hadley's book 但无法找出问题所在。

这是我的 NAMESPACE 的相关部分:

import("ggplot2",
   "stringr")
import("psych")
importFrom("plyr","count")
importFrom("reshape2","melt")
importFrom("digest", "digest")
importFrom("RColorBrewer", "brewer.pal")

这是我的一部分 DESCRIPTION:

Imports:
  digest,
  psych,
  knitr,
  RColorBrewer,
  stringr,
  ggplot2,
  plyr,
  reshape2

我在函数 array.viz.R 中调用 ggplot2 函数的部分看起来像这样(以及更多):

g <- ggplot(
      data = array.viz.data
      ,aes(
        x = fsc  # factor scores, always same variable bc dataframe is constructed for every factor array by above loop
        ,y = ycoord  # just the random ycoord for viz
        ,ymax = max(ycoord)
        ,ymin = 0
        #,label = item.wrapped  # this for some reason causes an error
      )
    )
    g <- g + geom_tile(  # add background tiles
      aes(
        fill = item.sd
      )
    )

Ps.: 你可以在这里找到整个当前工作:https://github.com/maxheld83/qmethod/tree/array-viz

Pps.: 我知道 ggplot2 本身导入了一堆我也导入的函数(例如 reshape2),所以我预感这可能是个问题。

事实证明,import("psych") 是有问题的包。

它似乎以某种方式再次导出 ggplot::%+%,但我想不出为什么会这样。

无论如何,解决办法是:

importFrom("psych", "principal")  # that's the function we were using