Rが仮想であるので、インスタンス化できないが、含まれるクラス(contains=
)など、他のスロット(representation=
)で使用することができる「クラス組合ので
setOldClass("data.frame")
setClassUnion("data.frameORvector", c("data.frame", "vector"))
クラスdata.frameORvector
を有しますあなたが知っているすべてのスロットがクラス組合の親タイプのいずれかが含まれていることですので、発送
ため
A = setClass("A",
representation=representation(x="data.frameORvector"))
> A(x=1:3)
An object of class "A"
Slot "x":
[1] 1 2 3
> A(x=data.frame(x=1:3, y=3:1))
An object of class "A"
Slot "x":
x y
1 1 3
2 2 2
3 3 1
方法は実装が難しいことができます。
setGeneric("hasa", function(object) standardGeneric("hasa"))
setMethod("hasa", "data.frameORvector", function(object) typeof([email protected]))
> hasa(A(x=1:5))
[1] "integer"
> hasa(A(x=data.frame(y=1:5)))
[1] "list"
私は実際に?Classes
、?Methods
、?setClass
上のドキュメントを見つけると、友人は役に立ち。 Hadley Wickhamはtutorialです(このページの例はそれほど強くない、Person
をインスタンス化しますが、概念的にはRのベクトル化の強みを利用するためにPeople
と書いています)。私は、いずれかのクラスの労働組合について詳しく述べるとは思わない。
スロット付きのものはS4クラスです。 – Spacedman
それだけでなく、あなたが示すものはすべてS4メソッドの仕組みに関係しています。 –
はい、私の悪いです。間違った番号。 –