我正在做OOP R並想知道如何製作它,因此可以使用+
將自定義對象添加到一起。我發現的最常見的例子是在ggplot2
w /添加geoms在一起。在R中添加對象(如ggplot圖層)
我通過ggplot2
源代碼閱讀,發現這
https://github.com/hadley/ggplot2/blob/master/R/plot-construction.r
看起來正在使用"%+%"
的,但目前還不清楚如何最終轉化爲普通+
操作。
我正在做OOP R並想知道如何製作它,因此可以使用+
將自定義對象添加到一起。我發現的最常見的例子是在ggplot2
w /添加geoms在一起。在R中添加對象(如ggplot圖層)
我通過ggplot2
源代碼閱讀,發現這
https://github.com/hadley/ggplot2/blob/master/R/plot-construction.r
看起來正在使用"%+%"
的,但目前還不清楚如何最終轉化爲普通+
操作。
你只需要爲通用函數+
定義一個方法。 (在你的問題的鏈接中,該方法是"+.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
謝謝,這正是我正在尋找。出於好奇,你知道R文檔中的這個位置嗎? – Greg
@Greg - 我認爲它*不直接在R文檔中。你實際上是通過直接找到你感興趣的函數的源頭來做最好的事情。它也會嘗試'方法(「+」)'然後查看'+ .Date'或' + .POSIXt'或'+ .gg'(如果加載了** ggplot2 **)。無論如何,很高興這有幫助。 –
這是高於我的理解水平,但在附件中的第63行似乎定義了一個方法'+'被分派到'gg'對象。 'methods(「+」)'確認有一個'gg'的方法。 – Chase