5

私はOOP Rをやっています+が、カスタムオブジェクトを一緒に追加するために使用できるようにする方法を考えていました。私が見つけた最も一般的な例は、ggplot2ジオメトリを一緒に追加することです。

ggplot2ソースコードを読んで、これを見つけました

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

が使用されているように見えますが、それが最終的にプレーンな演算子"%+%"にどのように変換されるかは明確ではありません。+

4

1 に答える 1

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
于 2013-05-29T06:34:24.893 に答える