2015-06-16 13 views
5

Sto scrivendo un pacchetto R e mi piacerebbe utilizzare una funzione da un altro pacchetto (plotKML). Questo pacchetto esterno ha così tante dipendenze che non voglio che i miei utenti siano obbligati a scaricare ecc. Se utilizzo importFrom(plotKML, readGPX) nel file NAMESPACE, caricherà tutto lo plotKML nello spazio dei nomi e scaricherà tutte le dipendenze che non desidero.Importazione di una funzione nel pacchetto R (senza importFrom)

Quindi la domanda è: è opportuno copiare il codice per l'unica funzione di cui ho bisogno (assicurando che tutte le dipendenze in quella funzione siano incluse)? In tal caso, cosa è appropriato per l'attribuzione/documentazione - copio la documentazione dall'originale?

C'è una bella discussione di questo problema in this post e la risposta di Brian Diggs è molto utile. Ma conclude con "Per il tuo esempio, potresti essere meglio copiare il codice per memisc :: descriviti nel tuo pacchetto, anche se quell'approccio ha i suoi problemi e i suoi avvertimenti" quindi mi rimane qualche incertezza su quali siano i problemi e se è appropriato da una prospettiva di attribuzione.

+0

Il codice per quella funzione viene eseguito senza le dipendenze? – Dason

+0

La funzione dipende da alcune funzioni del pacchetto XML che devo importare comunque, quindi nessun problema. Altrimenti non richiede funzioni da nessuno degli altri pacchetti elencati nelle importazioni (quasi 20 pacchetti richiesti!) Vedi [qui] (http://cran.r-project.org/web/packages/plotKML/index.html) per l'elenco richiesto da plotKML. – ZRoss

+0

Suppongo che la maggior parte dei tuoi utenti abbia installato almeno la metà dei pacchetti da cui importa comunque la trama KML. – Roland

risposta

3

Le domande sull'attribuzione appropriata sarebbero probabilmente risolte meglio contattando direttamente l'autore del pacchetto. Come notato nei commenti sopra, quel pacchetto sembra utilizzare GPL-3, il che dovrebbe significare che puoi includere la funzione nel tuo pacchetto ma il tuo pacchetto deve essere anche GPL-3 licenziato. (Come sempre, probabilmente nessuno qui è un avvocato, quindi è su di voi per verificare ...)

Lo svantaggio principale di copiare solo la funzione di cui avete bisogno è che quindi siete responsabili per il suo mantenimento. Questo probabilmente significa anche mantenerlo in un modo che lo mantenga in sincrono con la versione originale della trama KML. A seconda del pacchetto, del codice circostante e della frequenza con cui viene aggiornato potrebbe essere abbastanza semplice o potrebbe essere orribile.

Problemi correlati