Определите объект класса "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)' в метод print (получение 'foo' от имени объекта).Да, вы можете создавать подклассы функций в S3.Я полагаю, что могут быть другие пифалы ..