在R中添加对象(如ggplot图层)

时间:2013-05-29 02:43:41

标签: r ggplot2

我正在做OOP R,并且想知道如何制作它,以便+可用于将自定义对象添加到一起。我发现的最常见的例子是ggplot2 w /将geoms加在一起。

我通读了ggplot2源代码,发现了这个

https://github.com/hadley/ggplot2/blob/master/R/plot-construction.r

似乎正在使用"%+%",但目前尚不清楚最终如何转换为普通+运算符。

1 个答案:

答案 0 :(得分:5)

您只需要为泛型函数+定义一个方法。 (在您问题的链接中,该方法为"+.gg",旨在由类"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