在R中将对象添加到一起(如ggplot图层)

在R中将对象添加到一起(如ggplot图层),r,ggplot2,R,Ggplot2,我正在做OOP R,我想知道如何使+可以用来添加自定义对象。我发现的最常见的例子是在一起添加几何图形的ggplot2w/中 我通读了ggplot2源代码,发现了这个 看起来像是使用了“%+%”,但不清楚它最终如何转化为普通的+运算符。您只需要为泛型函数定义一个方法+。(在您问题中的链接处,该方法是“+.gg”,旨在通过类“gg”的参数进行调度): ##两个不同类的示例数据 dd这有点超出我的理解水平,但附件中的第63行似乎定义了一种方法,用于在gg对象上调度+methods(“+”)确认有一种

我正在做OOP R,我想知道如何使
+
可以用来添加自定义对象。我发现的最常见的例子是在一起添加几何图形的
ggplot2
w/中

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


看起来像是使用了
“%+%”
,但不清楚它最终如何转化为普通的
+
运算符。

您只需要为泛型函数定义一个方法
+
。(在您问题中的链接处,该方法是
“+.gg”
,旨在通过类
“gg”
的参数进行调度):

##两个不同类的示例数据

dd这有点超出我的理解水平,但附件中的第63行似乎定义了一种方法,用于在
gg
对象上调度
+
methods(“+”)
确认有一种方法用于
gg
。谢谢,这正是我要找的。出于好奇,你知道这在R文档中的位置吗?@Greg--我不认为它直接在R文档中。实际上,通过直接访问您感兴趣的函数的源代码,您做了最好的事情。它还可以尝试
方法(“+”
),然后查看
+.Date
+.POSIXt
+.gg
(如果加载了ggplot2)。无论如何,我很高兴这有帮助。作为后续,因为这超出了我的理解水平:我将如何使用
+.gg*
将ggproto对象添加到一起?假设我想保存一些scale aes以备以后使用,比如
my.scale\u aes
## 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