R 从父类调用setup\u数据
回击 我正在阅读这篇关于如何将自我调整文本放入条形图的优秀答案: 在阅读了一些关于R 从父类调用setup\u数据,r,ggplot2,ggproto,R,Ggplot2,Ggproto,回击 我正在阅读这篇关于如何将自我调整文本放入条形图的优秀答案: 在阅读了一些关于ggproto的内容,特别是关于的小插曲之后,我想知道为什么作者必须定义setup\u data例程,如下所示: GeomFit <- ggproto("GeomFit", GeomRect, setup_data = function(data, params) { data$width <- data$width %||%
ggproto
的内容,特别是关于的小插曲之后,我想知道为什么作者必须定义setup\u data
例程,如下所示:
GeomFit <- ggproto("GeomFit", GeomRect,
setup_data = function(data, params) {
data$width <- data$width %||%
params$width %||% (resolution(data$x, FALSE) * 0.9)
transform(data,
ymin = pmin(y, 0), ymax = pmax(y, 0),
xmin = x - width / 2, xmax = x + width / 2, width = NULL
)
})
所以我想我可以简单地用以下方式来代替:
GeomFit <- ggproto("GeomFit", GeomRect,
setup_data = function(self, data, params)
ggproto_parent(GeomBar, self)$setup_data(data, params))
GeomFit我没有参与ggplot2
包的开发,但我会尝试一下,因为已经一周了&到目前为止还没有其他人发布过
以下是我从ggplot2复制的相关函数定义:
或者这个:
GeomFit <- ggproto("GeomFit", GeomRect,
setup_data = environment(GeomBar$setup_data)$f)
这就是我所说的极好的答案。非常感谢你。它不仅回答了我的问题,而且给了我非常有用的见解,我还没有意识到,特别是[[
aka.subset2
的非分派形式,以及如何通过环境访问设置数据。再一次,世界级的答案!+1(如果我可以的话,更多!)
ggproto_parent <- function(parent, self) {
structure(list(parent = parent, self = self), class = "ggproto_parent")
}
`$.ggproto_parent` <- function(x, name) {
res <- fetch_ggproto(.subset2(x, "parent"), name)
if (!is.function(res)) {
return(res)
}
make_proto_method(.subset2(x, "self"), res)
}
GeomFit <- ggproto("GeomFit", GeomRect,
setup_data = .subset2(GeomBar, "setup_data"))
GeomFit <- ggproto("GeomFit", GeomRect,
setup_data = environment(GeomBar$setup_data)$f)