Определить объект S3 класса «бар» и способ печати:Получение имени объекта для S3 метода печати неисправного
foo=list(1)
class(foo) <- c("bar")
print.bar <- function(x,...){
cat("print.bar says this was ",deparse(substitute(x)),"\n")
}
Теперь печать (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. Я полагаю, что могут быть и другие pifalls.
Да, похоже, это невозможно. Я мог бы взглянуть на источник, чтобы узнать, как это происходит. Спасибо! – Spacedman