Определите объект класса "класс" класса S3 и метод печати:
foo=list(1)
class(foo) <- c("bar")
print.bar <- function(x,...){
cat("print.bar says this was ",deparse(substitute(x)),"\n")
}
Теперь print (foo) делает следующее:
> print(foo)
print.bar says this was foo
Отлично, но автоматическая печать не выполняется:
> foo
print.bar says this was structure(list(1), class = "bar")
Я предполагаю, что это связано с тем, как линия оценивается как выражение верхнего уровня. Был быстрый поиск на R-devel безрезультатно. Кто-нибудь знает, как это исправить?
Причина, по которой я хочу имя, состоит в том, что вещь, которую я определяю, является функцией, и я хочу, чтобы в методе печати можно было попробовать "try foo (2)" (получив "foo" от имени объекта). Да, вы можете подклассифицировать функции в S3. Я полагаю, что могут быть другие пифаллы.