2013-04-19 12 views
5

Ho una domanda sulle classi di riferimento. La mia domanda è nel contesto di un pacchetto R che sto sviluppando rCharts. Utilizza le classi di riferimento per creare grafici interattivi da R.È possibile effettuare una classe di riferimento per registrare le chiamate

La creazione di un grafico comporta una serie di chiamate. Ecco un esempio, in cui viene inizialmente creato uno scatterplot e quindi viene aggiunto un grafico a linee.

p1 <- rPlot(mpg ~ cyl, data = mtcars, type = 'point') 
p1$layer(copy_layer = T, type = 'line') 

Ora, dal momento che una classe di riferimento è come una chiusura, mi chiedevo se fosse possibile registrare le chiamate effettuate. L'idea è che se riesco a registrare la sequenza di chiamate effettuate, posso inserire automaticamente il codice sorgente utilizzato per creare una visualizzazione, insieme con l'html.

Stavo cercando di vedere se potevo fare uso di sys.function o match.call, ma non posso arrivare da nessuna parte. Se qualcuno può indicarmi come posso avvicinarmi a questo, sarebbe molto apprezzato.

+2

La soluzione dovrebbe essere abbastanza: in ogni metodo avrete bisogno di qualcosa come 'chiamate << - c (chiamate, lista (match.call()))' – hadley

+0

Grazie, ha funzionato alla grande! Forse dovrei postare questa domanda come una domanda diversa, ma qual è il modo consigliato per rieseguire un elenco di chiamate. – Ramnath

+2

Solo 'eval()' loro - ma se vuoi farlo, devi anche catturare l'ambiente in cui sono stati eseguiti con 'parent.frame()' – hadley

risposta

2

Come @hadley ha dichiarato:

calls <<- c(calls, list(match.call())) 

Sono contento che sembra aver funzionato. Facciamola chiusa. :)

Problemi correlati