Pakete, die data.table verwenden (und ich glaube auch dplyr), erhalten diesen HINWEIS (vielleicht viele) von R CMD check. Können wir etwas tun? Es ist nur ein HINWEIS, kann also ignoriert werden, aber trotzdem.
Stellen Sie vielleicht eine Funktion bereit, die diese Symbole erkennt und automatisch den globalVariables()
-Aufruf für den Paketautor erstellt.
http://stackoverflow.com/questions/15409806/r-package-compilation-with-dependency-on-data-table
http://stackoverflow.com/questions/8096313/no-visible-binding-for-global-variable-note-in-r-cmd-check
IIUC, es wäre eine Änderung an 'R CMD check' erforderlich, um es auf die "Nicht-Standard-Evaluierung" aufmerksam zu machen, die sowohl data.table als auch dplyr verwenden. Das ist ein schwieriges Problem (vielleicht sogar unmöglich, ohne den Code auszuführen). Die Funktionen ?globalVariables
wurden also in 2.15.1 zu R hinzugefügt, und weniger bekannt ist vielleicht, dass in R 3.1.0 ?dontCheck
hinzugefügt wurde, das zum Umschließen von Abfragen mit NSE verwendet werden kann. Diese sind besser als <-NULL
, was das Risiko birgt, echte Fehler in anderen Bereichen des Codes sowie in denen, die NSE verwenden, zum Schweigen zu bringen (oder möglicherweise neue zu erstellen).
Kann nicht unbedingt ignoriert werden; Einige Pakete werden abgelehnt und Autoren werden von CRAN angewiesen, globalVariables
zu verwenden, um die NOTES zu unterdrücken. Z.B:
Hallo,
Es ist ein altes Problem, aber nicht abgeschlossen. Ich wollte fragen ob es jetzt eine neue Lösung gibt?
Ansonsten, was ist die gute Praxis zu befolgen? immer noch globalVariables
?
Ich mag die Idee von
eine Funktion, die diese Symbole erkennt und das
globalVariables()
erstellt
Danke.
@cderv Sie können der Variablen einfach NULL zuweisen, bevor Sie sie verwenden (nicht mit Überschreiben verwechseln). Sie definieren also keine globalen Variablen, sondern nur lokal in einer Funktion, in der Sie sie verwenden. Ich glaube nicht, dass wir das in besonderer Weise ansprechen müssen. Vorerst geschlossen, da das Problem 2 Jahre ohne definierte Aktionspunkte wartet und nicht wirklich ein data.table-Problem ist.
Hilfreichster Kommentar
@cderv Sie können der Variablen einfach NULL zuweisen, bevor Sie sie verwenden (nicht mit Überschreiben verwechseln). Sie definieren also keine globalen Variablen, sondern nur lokal in einer Funktion, in der Sie sie verwenden. Ich glaube nicht, dass wir das in besonderer Weise ansprechen müssen. Vorerst geschlossen, da das Problem 2 Jahre ohne definierte Aktionspunkte wartet und nicht wirklich ein data.table-Problem ist.