definir un objeto de la clase S3 "bar" y un método de impresión:Obtener el nombre del objeto para el método de impresión S3 no
foo=list(1)
class(foo) <- c("bar")
print.bar <- function(x,...){
cat("print.bar says this was ",deparse(substitute(x)),"\n")
}
Ahora imprima (foo) hace esto:
> print(foo)
print.bar says this was foo
Grande, pero auto-impresión no funciona:
> foo
print.bar says this was structure(list(1), class = "bar")
supongo que esto es algo que ver con la forma en que la línea se evalúa como una expresión de nivel superior. Tuve una búsqueda rápida en R-devel inútilmente. ¿Alguien sabe como arreglarlo?
La razón por la que quiero el nombre es porque lo que estoy definiendo es una función, y quiero poner 'try foo (2)' en el método de impresión (obteniendo 'foo' del nombre del objeto). Sí, puede subclasificar funciones en S3. Supongo que puede haber otras pantallas.
Sí, parece que no se puede hacer. Podría echar un vistazo a la fuente para ver exactamente cómo sucede esto. ¡Gracias! – Spacedman