2014-09-29 10 views
16

Ho un pacchetto R che ho creato in RStudio, chiamiamolo my_pkg. Quando eseguo devtools::load_all(".") entro RStudio (in particolare utilizzando il collegamento Ctrl + Shift + L), ottengo il seguente messaggio:avvisi di carattere (0) durante l'esecuzione di devtools :: load_all (".") In RStudio

Loading my_pkg 
Warning messages: 
1: character(0) 
2: character(0) 
3: character(0) 
4: character(0) 
5: character(0) 

Tutte le funzioni del bel lavoro pacchetto. I miei file NAMESPACE e DESCRIPTION sono completi senza errori di sintassi. Quando eseguo ?my_pkg, tuttavia, il file della guida non corrisponde alle specifiche fornite nel file DESCRIPTION. Quando rimuovo lo Imports da DESCRIPTION, non c'è più il messaggio di avviso character(0). Certo, ho bisogno di quelle importazioni. Quando cambio Imports a Suggests, c'è il messaggio di avviso character(0).

Ecco il contenuto del file di descrizione, con alcune cose modificate per proteggere IP.

Package: scoutdroid 
Title: This is where the title is. 
Version: 0.1 
[email protected]: "Ben Hanowell <[email protected]> [aut, cre]" 
Description: This is where the description is. 
Depends: 
    R (>= 3.1.0) 
Imports: 
    dplyr, 
    lubridate, 
    mboost, 
    randomForestSRC, 
    RODBC, 
    stringr 
License: file LICENSE 
LazyData: true 

Ed ecco NAMESPACE.

# Generated by roxygen2 (4.0.1): do not edit by hand 

import(RODBC) 
import(dplyr) 
import(lubridate) 
import(mboost) 
import(parallel) 
import(randomForestSRC) 
import(stringr) 

Quando uso il RStudio Costruire & pulsante Ricarica nella scheda Genera, ottengo le seguenti avvertenze:

** pacchetto di preparazione per caricamento pigro

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

modificare aggiunto alcune maggiori dettagli per aiutare le persone a capire cosa potrebbe succedere.

modifica 2 Ho anche aggiunto il file DESCRIPTION, sebbene non fornisca il pacchetto completo, che è proprietario.

modifica 3 Aggiunto NAMESPACE.

modificare 4 avvertimenti aggiunto che si verificano quando si utilizza RStudio Costruire & pulsante Ricarica nella scheda Genera.

+0

È il pacchetto su github – Dason

+0

No. È di proprietà. * modifica * È su Bitbucket, ma l'accesso è privato. –

+1

Buona fortuna. Forse potresti provare a fare un esempio riproducibile minimo. – Dason

risposta

16

Dopo alcuni dialoghi nei commenti, abbiamo capito che gli avvisi vuoti che load_all ti dà sono effettivamente iniziati quando si carica il pacchetto a causa di conflitti di nomi di funzione.

Il problema è che si sta importando una funzione da un pacchetto, quindi si sovrascrive quella funzione. Quando ciò accade R lancia avvertimenti, come si è visto quando si è fatto clic "Build & Reload" in RStudio:

Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid' 
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid' 

Sembra load_all possono essere tentando di attutire gli avvertimenti (solo una supposizione) ed è per questo che si vede character(0) invece degli avvertimenti attuali. (Questi avvisi particolari sono difficili da silenziare.)

Generalmente non è una buona idea importare lo spazio dei nomi di un intero pacchetto. Dovresti invece importare solo i simboli che ti servono. Vedi il this post del mio per altro.

La soluzione è utilizzare importFrom anziché import nel file NAMESPACE.

+1

Per gli altri che vengono qui, alla ricerca di soluzioni. Quando esegui 'devtools :: check', gli avvisi sopra mostreranno – adibender