Определите метод показа для класса S3

Я был весьма ошеломлен, узнав, что show является общим для S4, и что я не могу найти способ использовать диспетчеризацию S3, чтобы заставить работать функцию show. Простая демонстрация:

> 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 (из которых большая часть - минимизация накладных расходов, поскольку объекты будут широко использоваться при начальной загрузке). Как мне определить здесь другой метод отображения и печати?

5
задан Nick Sabbe 7 December 2011 в 12:27
поделиться