在ggplot2中创建自定义Stat对象

Dav*_*son 8 r ggplot2

我想为ggplot2创建一个自定义Stat对象.(具体来说,我想创建一个更平滑的工作方式,而不是stat_smooth允许的方式 - 例如,没有y~x建模功能 - 但即使有针对我的特定情况的解决方法,我也想创建其他自定义统计数据).

从Hadley Wickham那里找到了这个建议的解决方案:

StatExpo <- proto(Stat, {
  objname <- "expo"
  desc <- "Exponential smoothing"
  default_geom <- function(.) GeomLine

  calculate_groups <- function(., data, scales, variable="x", ...) {
    data$y <- HoltWinters(data$x, ...)
  }
})
stat_expo <- StatExpo$new
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试它时,我得到:

Error in proto(Stat, { : object 'Stat' not found
Run Code Online (Sandbox Code Playgroud)

在查看ggplot代码时,我发现了Stat的定义.但是,Stat就我所知,该对象从未从ggplot2导出.

我可以在ggplot2/R文件夹中编写新的stat对象,然后重新安装包,但显然这会很麻烦,并且很难与其他人共享解决方案.如何在ggplot命名空间之外创建自定义Stat对象?

bap*_*ste 5

ggplot2:::Stat可用于访问非导出对象。

  • 不幸的是,需要 ::: 将阻止用户定义的函数包含在要提交给 CRAN 的包中。CRAN 检查不允许 :::。 (2认同)