Определите объект класса S3 «bar» и метод печати:
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. Полагаю, могут быть и другие пифоллы ..