2016-07-22 2 views
0

사용자 정의 R 객체에 대해 colnames 메소드를 제공하기 위해 기본 (비 S3) 메소드를 대체하려고합니다. 나는 S4가 아닌 S3로 이것을하고 싶다. colnames 접근을 위해 기본 대입 함수 재정의

이는 내 수업하는 방법을 제공하는 기본 방법으로 기본 기능을 설정함으로써 달성 될 수있다 : 하나는 setter 메소드를 오버라이드 (override) 얼마나

그러나
colnames <- function(x, ...) UseMethod("colnames") 
colnames.default <- base::colnames 
colnames.myclass <- function(x, ...) { 
    # some code here 
} 

. 나는 희망한다 뭔가이 좋아 작동합니까?

"colnames<-" <- function(x, value) UseMethod("colnames<-") 
"colnames<-.default" <- "base::colnames<-" 
"colnames<-.myclass" <- function(x, value) { 
    print("Setting colnames for myclass") 
    # Some code 
} 

그러나이 정규 행렬에 대해 올바르게 기본 함수를 호출하지 못하는 것 같다 :

> test <- matrix(1:10, 5) 
> colnames(test) <- c("a", "b") 
Error in UseMethod("colnames<-") : 
    no applicable method for 'colnames<-' applied to an object of class "c('matrix', 'integer', 'numeric')" 

답변

1

당신은 문자열로 (즉,하지 않는 기능) colnames<-.default을 설정합니다. 그게 효과가 없을거야.

"colnames<-.default" <- "base::colnames<-" 

구문 이름이 아닌 개체를 참조 할 때는 백틱을 사용하십시오.

`colnames<-.default` <- base::`colnames<-`