我有一个R6类,我希望定义%*%
方法。我在另一个question中看到了如何使用新的S4方法实现这一目标。但是,我尝试了这种方法,当我尝试为我的R6类创建S4 %*%
方法时,它失败了。例如:
library(R6)
setOldClass(c("TestR6", "R6"))
TestR6 <- R6Class("TestR6", public = list(.x = "numeric"))
setMethod("%*%", c(x = "TestR6", y = "TestR6"),
function(x, y){
print('the matmult operation')
}
)
x <- TestR6$new()
y <- TestR6$new()
x %*% y
x%*%y出错:需要数字/复杂矩阵/向量参数
然而,如果我创建foo
方法,它仍然有效。
setGeneric("foo", signature = "x",
def = function(x) standardGeneric("foo")
)
setMethod("foo", c(x = "R6"),
definition = function(x) {
"I'm the method for `R6`"
})
try(foo(x = TestR6$new()))
[1] "I'm the method for `R6`"
为什么它不适用于%*%
方法?