Hands-On Programming with R (Garrett Grolemund)
책에서 설명된 S3 에 의하면
- 제너릭 함수 (generic function)
- 메서드 (method)
- 클래스 (class)
3개의 기반 디스패치를 가리켜 S3라고 한다.
하지만 저런용어가 쉽게 와닿지 않는 상태에서 이해하기란 쉽지
않았다.
때문에 R의 S3 가 무엇인지 빠르게 체감해 볼 수 있도록 샐프 코드를 만들어
보았다.
최소재현예제 이므로 코드실행에 5분만 투자한다면 큰 체감을 얻을 수
있을것으로 예상된다.
어떠한 부가설명도 없는 코드를 아래와 같이 공유하고자 한다.
Generic function
<- function(x){
lovetoken UseMethod("lovetoken")
}
Method
<- function(x){
lovetoken.default
x }
<- function(x){
lovetoken.class1 c(sum(x), mean(x))
}
<- function(x){
lovetoken.class2 c(var(x), sd(x))
}
Class
<- 0:10
test lovetoken(test) # `lovetoken.default(test)` 를 실행하는 것과 동일
## [1] 0 1 2 3 4 5 6 7 8 9 10
class(test) <- "class1"
lovetoken(test) # `lovetoken.class1(test)` 를 실행하는 것과 동일
## [1] 55 5
class(test) <- "class2"
lovetoken(test) # `lovetoken.class2(test)` 를 실행하는 것과 동일
## [1] 11.000000 3.316625
class(test) <- "unknown"
lovetoken(test) # `lovetoken.default(test)` 를 실행하는 것과 동일
## [1] 0 1 2 3 4 5 6 7 8 9 10
## attr(,"class")
## [1] "unknown"