Come modificare ed eseguire il debug di sorgenti di librerie R

Ho incluso una libreria chiamata blotter nel mio script R che ha un bug in esso. C’è un modo semplice per me di modificare la fonte per provare a eseguire il debug del problema?

Cerca le funzioni di trace e browser , sono gli strumenti di base in R per il debug. Supponi di voler modificare la fonte della funzione foo , quindi di dire

 trace("foo",edit=TRUE) 

aprirà la fonte di foo nell’editor per farti cambiare. Tuttavia, questo è per il debug interattivo; i file di origine nei pacchetti non vengono modificati. Quindi, una volta trovato il bug, è necessario modificare i file di origine del pacchetto affinché la modifica sia permanente.

Tale funzione è implementata nella versione di sviluppo di R (16 luglio 2010):

Una nuova funzione è stata aggiunta a r-devel per la sperimentazione da parte degli autori di pacchetti.

L’idea è di inserire il codice modificato dall’origine del pacchetto nel pacchetto in esecuzione senza reinstallarlo. Quindi si può cambiare, testare, cambiare, ecc. In un ciclo veloce.

Il meccanismo è di valutare alcuni file del codice sorgente, restituendo un object ambiente che è un’istantanea del codice. Da questo ambiente, funzioni e metodi possono essere inseriti nell’ambiente del pacchetto nella sessione corrente. L’inserimento utilizza il meccanismo trace (), quindi il codice originale può essere ripristinato.

La versione one-step è:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

Vedi questo post per ulteriori dettagli: Inserimento e test delle funzioni revisionate in un pacchetto

La tua domanda su C’è un modo semplice per me di modificare la fonte per provare a eseguire il debug del problema? ha la risposta ovvia: usa la fonte, Luke!

blotter è un pacchetto su R-Forge da cui è ansible ottenere qui le fonti dei blotter . Questo è il modo standard di guardare all’Open Source e possibilmente aiutarlo insieme a una correzione di bug.