Класс R6 не распознается в методе S4 %*%

У меня есть класс R6, который я хочу иметь %*% метод определен. В другом вопросе я видел, как этого добиться с помощью нового метода S4. Тем не менее, я попробовал этот подход, и он терпит неудачу, когда я пытаюсь создать S4 %*% метод для моего класса R6. Например:

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 ответов

Другие вопросы по тегам