Definire un oggetto della classe S3 "bar" e un metodo di stampa:Ottenere il nome dell'oggetto per S3 metodo di stampa in mancanza
foo=list(1)
class(foo) <- c("bar")
print.bar <- function(x,...){
cat("print.bar says this was ",deparse(substitute(x)),"\n")
}
Ora Stampa (foo) fa questo:
> print(foo)
print.bar says this was foo
Grande, ma auto-stampa non riesce:
> foo
print.bar says this was structure(list(1), class = "bar")
sto indovinando questo è qualcosa a che fare con il modo in cui la linea viene valutata come espressione di alto livello. Ho fatto una rapida ricerca su R-Devel senza successo. qualcuno sa come ripararlo?
Il motivo per cui voglio il nome è perché la cosa che sto definendo è una funzione, e voglio essere in grado di mettere 'try foo (2)' nel metodo di stampa (ottenendo 'foo' dal nome del oggetto). Sì, puoi eseguire la sottoclasse di funzioni in S3. Suppongo che ci possano essere altri pifani ..
Sì, sembra che non si possa fare. Potrei dare un'occhiata alla fonte per vedere esattamente come accade. Grazie! – Spacedman