R 그렇게
setOldClass("data.frame")
setClassUnion("data.frameORvector", c("data.frame", "vector"))
클래스 data.frameORvector
가상이다, '클래스 조합'을 가지고 있으므로 인스턴스화 할 수없는 있지만 포함 된 클래스 (contains=
)과 같은 다른 슬롯 (representation=
)에서 사용할 수 있습니다, 파견
에 대한
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
을 작성합니다).이 최근 Bioconductor course에 섹션이 있습니다. 나는 어느 쪽이든이 노조들에 대해 상세하게 생각하지 않는다고 생각한다.
슬롯이있는 것은 S4 클래스입니다. – Spacedman
당신이 보여주는 모든 것은 S4 방법 메커니즘과 관련이 있습니다. –
예, 제 잘못입니다. 잘못된 번호. –