Attualmente sto sviluppando un plug-in per la GUI di R-Commander. In questo pacchetto sto usando una grande quantità di altri pacchetti che ho semplicemente allegato usando l'opzione Depends nel file di descrizione. Tuttavia ora sto passando all'opzione Imports e sto riscontrando alcuni problemi con esso. Perché voglio usare alcune funzioni non solo internamente nel mio codice, ma anche essere in grado di stamparle e usarle nella finestra di script di R Commander, dovrò anche esportarle nello spazio dei nomi.Importazione/esportazione di pacchetti utilizzando NAMESPACE
Prendiamo ad esempio il pacchetto biclust
. Questo pacchetto ha le seguenti esportazioni nel suo spazio dei nomi:
# First a bunch of functions are exported (Note that the biclust function is not in here!)
export(drawHeatmap,drawHeatmap2,bubbleplot,...,heatmapBC)
# The classes are exported
exportClasses(BiclustMethod,Biclust,BCBimax,BCCC,BCXmotifs,BCSpectral,BCPlaid)
# Methods are exported
exportMethods(biclust,show,summary)
Così, quando mi library(biclust)
in una sessione di R, funziona come previsto, il che significa che posso utilizzare il metodo di biclust
/funzione nella console R.
Ora questo come il mio file namespace assomiglia (o almeno la parte di essa relative a questa discussione)
# I select those functions I need and import them.
importFrom(biclust, drawHeatmap,...,biclustbarchart)
# I import all the classes
importClassesFrom(biclust,BiclustMethod,Biclust,BCBimax,BCCC,BCXmotifs,BCSpectral,BCPlaid)
# I import all the methods
importMethodsFrom(biclust,show,summary,biclust)
# I now export all of the previous again so I can use the doItAndPrint functionality in R Commander
export(drawHeatmap,...,biclustbarchart)
exportClasses(BiclustMethod,Biclust,BCBimax,BCCC,BCXmotifs,BCSpectral,BCPlaid)
exportMethods(biclust,show,summary)
Tuttavia quando carico nel mio pacchetto di oggi, non funziona come previsto. Mentre le funzioni come drawHeatmap
stanno lavorando, il biclust
metodo/funzione non può essere trovato. (Anche se ho chiaramente importato ed esportato il metodo.)
Apparentemente l'unico modo per ottenere questo lavoro, è quello di mettere anche il metodo biclust
nel normale comando export()
.
export(biclust,drawHeatmap,...,biclustbarchart)
Qualcuno potrebbe chiarire cosa sto facendo male o cosa sta succedendo qui? Perché le stesse esportazioni funzionano per il pacchetto biclust
, ma non per il mio pacchetto?
Benvenuti in StackOverflow. Questa è una domanda ben formulata, ma non molto correlata a RCommander, quindi ho modificato il titolo in modo un po 'più generico. – Andrie
I metodi 'show' e' summary'' S3' non sono? Qualcosa cambia se provi 'S3method (show, biclust)' nel tuo file 'NAMESPACE'? – nicola
Non appena ho provato, il mio pacchetto non riuscirà a costruire. * Attenzione: il metodo S3 'biclust' è stato dichiarato in NAMESPACE ma non è stato trovato * – Ewoud