在S4%*%方法中无法识别R6类

时间:2017-11-09 20:39:46

标签: r s4 r6

我有一个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`"

为什么它不适用于%*%方法?

0 个答案:

没有答案