我正在做 OOP R 并且想知道如何制作它以便+
可以用来将自定义对象添加在一起。我发现的最常见的例子是ggplot2
w/ 将 geoms 添加在一起。
我通读了ggplot2
源代码,发现了这个
https://github.com/hadley/ggplot2/blob/master/R/plot-construction.r
看起来"%+%"
正在使用,但尚不清楚最终如何转化为普通+
运算符。
我正在做 OOP R 并且想知道如何制作它以便+
可以用来将自定义对象添加在一起。我发现的最常见的例子是ggplot2
w/ 将 geoms 添加在一起。
我通读了ggplot2
源代码,发现了这个
https://github.com/hadley/ggplot2/blob/master/R/plot-construction.r
看起来"%+%"
正在使用,但尚不清楚最终如何转化为普通+
运算符。
您只需要为泛型函数定义一个方法+
。(在您问题的链接中,该方法是"+.gg"
,旨在由 class 的参数调度"gg"
)。:
## Example data of a couple different classes
dd <- mtcars[1, 1:4]
mm <- as.matrix(dd)
## Define method to be dispatched when one of its arguments has class data.frame
`+.data.frame` <- function(x,y) rbind(x,y)
## Any of the following three calls will dispatch the method
dd + dd
# mpg cyl disp hp
# Mazda RX4 21 6 160 110
# Mazda RX41 21 6 160 110
dd + mm
# mpg cyl disp hp
# Mazda RX4 21 6 160 110
# Mazda RX41 21 6 160 110
mm + dd
# mpg cyl disp hp
# Mazda RX4 21 6 160 110
# Mazda RX41 21 6 160 110