2014-09-29 9 views
16

Ich habe ein R-Paket, das ich in RStudio gebaut habe, nennen wir es my_pkg. Wenn ich devtools::load_all(".") innerhalb RStudio laufen (speziell die Ctrl + Shift + L Kürzel), erhalte ich die folgende Meldung:Zeichen (0) Warnungen beim Ausführen 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) 

alle Funktionen im Paket funktionieren. Meine NAMESPACE und DESCRIPTION Dateien sind komplett ohne Syntaxfehler. Wenn ich ?my_pkg ausführen, entspricht die Hilfedatei jedoch nicht den Spezifikationen, die in der Datei DESCRIPTION bereitgestellt werden. Wenn ich die Imports von DESCRIPTION entferne, gibt es keine character(0) Warnmeldung mehr. Natürlich brauche ich diese Importe. Wenn ich Imports zu Suggests ändere, gibt es character(0) Warnmeldung.

Hier ist der Inhalt der Beschreibungsdatei, mit einigen Sachen geändert, um IP zu schützen.

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 

Und hier ist 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) 

Wenn ich die RStudio & Reload-Button in der Registerkarte Build Bauen, erhalte ich die folgenden Warnungen:

** Vorbereitung Paket für verzögertes Laden

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' 

bearbeiten Added einige mehr Details, damit die Leute verstehen, was vor sich geht.

bearbeiten 2 Ich fügte auch die DESCRIPTION Datei hinzu, obwohl ich nicht das volle Paket, das proprietär ist.

bearbeiten 3 Hinzugefügt NAMESPACE.

bearbeiten 4 Es wurden Warnungen hinzugefügt, die bei der Verwendung von RStudio Build & Schaltfläche Neu laden auf der Registerkarte Erstellen auftraten.

+0

Ist Ihr Paket auf Github – Dason

+0

Nein. Es ist proprietär. * bearbeiten * Es ist auf Bitbucket, aber der Zugriff ist privat. –

+1

Gut viel Glück. Vielleicht könnten Sie versuchen, ein minimal reproduzierbares Beispiel zu geben. – Dason

Antwort

16

Nach einigen Dialoge in den Kommentaren haben wir herausgefunden, dass die leeren Warnungen, die load_all Ihnen gibt, tatsächlich initiiert werden, wenn das Paket wegen Funktionsnamenskonflikten geladen wird.

Das Problem besteht darin, dass Sie eine Funktion aus einem Paket importieren und dann diese Funktion überschreiben. Wenn das passiert R Warnungen wirft, wie Sie gesehen haben, als Sie „Build & Reload“ in RStudio geklickt:

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' 

Es sieht aus wie load_all versucht werden, diese Warnungen (nur eine Vermutung) zu betäuben, weshalb Sie character(0) statt sehen der tatsächlichen Warnungen. (Diese speziellen Warnungen sind schwer zu stummschalten.)

Es ist im Allgemeinen keine gute Idee, den Namespace eines ganzen Pakets zu importieren. Sie sollten stattdessen nur die Symbole importieren, die Sie benötigen. Siehe this post von mir für mehr.

Die Lösung ist importFrom anstelle von import in Ihrer NAMESPACE-Datei zu verwenden.

+1

Für andere, die hierher kommen und nach Lösungen suchen. Wenn Sie 'devtools :: check' ausführen, werden die obigen Warnungen angezeigt – adibender