Я очень ошеломлен, узнав, что шоу является родовым S4, и что я не могу найти способ использовать диспетчеризацию S3, чтобы заставить работать функцию шоу.Простая демонстрация:
> x <- 1:5
> xx <- structure(x,class="aClass")
> show.aClass <- function(object){
+ cat("S3 dispatching.\n")
+ print(object)
+ }
> xx
[1] 1 2 3 4 5
Нет отправки S3 здесь ...
> setMethod("show","aClass",function(object){
+ cat("S4 dispatching.\n")
+ print(object)
+ })
in method for ‘show’ with signature ‘"aClass"’: no definition for class “aClass”
[1] "show"
> xx
[1] 1 2 3 4 5
Что вы думаете?
> print.aClass <- function(object){
+ cat("the print way...\n")
+ print(as.vector(object)) #drop class to avoid infinite loop!
+ }
> xx
the print way...
[1] 1 2 3 4 5
И для печати это работает.
У меня есть довольно веские причины остаться с S3 (большая часть которого сводится к минимуму накладных расходов, поскольку объекты будут широко использоваться при начальной загрузке).Как я должен определить другой метод показа и печати здесь?