Сделайте отправку умножения матрицы R `%*%` на объекты S3

#r #s4

Вопрос:

У меня есть класс S3, в котором есть методы для большинства математических и операционных обобщений, и я хотел бы, чтобы он также работал %*% . Почему это не работает?

 setOldClass("foo")

setMethod("%*%", signature(x = "foo", y = "foo"),
          function(x, y) { "foo-foo" })

x <- structure(list(), class = "foo")
y <- structure(list(), class = "foo")
x %*% y
#> Error in x %*% y: requires numeric/complex matrix/vector arguments
 

Комментарии:

1. После внутреннего обсуждения с некоторыми знающими коллегами мы пришли к выводу, что сегодня это невозможно (R 4.1 является текущей версией). По крайней мере, один из объектов x или y должен быть объектом S4 для отправки на работу.

2. Возможно, некоторые разумные призывы к setOldClass тому, чтобы это сработало?