Un collega di recente stava esaminando i grafici delle chiamate e voleva vedere cosa chiamava cosa. Abbiamo risolto che con Foodweb da mvbutils, ma mi chiedevo sul modo migliore per creare un decoratore (in python parlare) in R. Quindi ho fatto questo:Scrivere un decoratore per le funzioni R
instrument=function(z){
force(z)
n=deparse(substitute(z)) # get the name
f=function(...){
cat("calling ", n,"\n")
x=z(...)
cat("done\n")
return(x)
}
return(f)
}
Questo mi permette di fare:
> foo=function(x,y){x+y}
> foo(1,2)
[1] 3
e ora posso farsi registrare la funzione avvolgendolo:
> foo=instrument(foo)
> foo(1,2)
calling foo
done
[1] 3
ciò è stato fatto prima, in un pacchetto dire, e ho perso dei trucchi che si romperà il mio modo di fare questo?
Domanda giusta, pubblico sbagliato. IMNSHO devi chiaramente chiedere questo su 'r-devel'. –
Fintanto che Gabor è nel pubblico, è il pubblico giusto. – Spacedman
Ottima domanda. Sebbene la risposta sia stata accettata, mi piacerebbe vederne una più canonica/enciclopedica :) – fmark