0
私は、カスタムRオブジェクトに対してcolnames
メソッドを提供するために、ベース(非S3)メソッドをオーバーライドしようとしています。私はS4ではなくS3でこれをやりたいcolnames
アクセサについてはオーバーライドベースの代入関数
、これはその後、私のクラスのメソッドを提供する、デフォルトの方法であることが基本機能を設定することによって達成することができます。
colnames <- function(x, ...) UseMethod("colnames")
colnames.default <- base::colnames
colnames.myclass <- function(x, ...) {
# some code here
}
しかし、どのように1は、setterメソッドをオーバーライドします。私は望むでしょう何かこれはうまくいくはずですか?
"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')"