2017-01-09 5 views
0

Der Kernpunkt der Frage das gleiche wie der Titel ist,Deklarieren Variable mit einem Punkt am Anfang in R

Jemand weiß, oder könnte infromation über „.variables“ in R zur Verfügung stellen?

Soweit ich weiß ist wie eine versteckte Variable, weil es nicht auf der globalen Umgebung von R Studio erscheint.

So würde der Punkt zu definieren sein:

  • Was ist das?
  • wofür wird verwendet?
  • einige Beispiele
+0

Sie können 'ls (all.names = TRUE)' verwenden, um alle Objektnamen – akrun

+0

thx akrun zu bekommen, aber das Hauptziel wäre es auch, es als ein Konzept zu definieren, sie sind versteckte Variablen? Was nutzt sie? einige informationen, um ihre verwendungen zu sehen .. thx viel – PeCaDe

+0

Sie können [hier] (http://stackoverflow.com/questions/7526467/what-does-the-dot-mean-in-r-personal-preference-naming -convention-or-more) – akrun

Antwort

6

Die Punktnotation Präfix in R gibt ein verstecktes Objekt, das nicht direkt durch ls zugegriffen werden kann, es sei denn, Sie ls(all.names = TRUE) verwenden. Der Zweck ist, dass Entwickler von R Paketen eine Möglichkeit haben, die Implementierungsdetails ihrer Funktionen vor Benutzern zu verbergen, was ihr Paket benutzerfreundlicher macht, wie es ausführlicher unter R-bloggers beschrieben ist (und hier kurz bei Link rot zitiert). :

Nehmen wir an, dass Sie die Funktion use_me() entwickeln. Wenn die Details, die die Benutzer steuern sollen, tatsächlich Argumente anderer Funktionen sind, die in use_me() verwendet werden, können Sie Ihre Funktion vereinfachen, indem Sie das Argument ... verwenden. Dieses Argument wird am Drei-Punkte-Konstrukt in R (Burns, 2013) sehr gut erklärt. Es ist sehr nützlich und kann Ihr Leben als Entwickler erheblich vereinfachen. Außerdem verkürzt es die Länge Ihrer Hilfeseiten und macht Ihr Paket benutzerfreundlicher.

Wenn jedoch einige der Details in use_me() keine Argumente für andere Funktionen sind, besteht die allgemeine Strategie darin, zwei Funktionen zu schreiben. Eine ist eine Low-Level-Funktion mit Argumenten für alle Details, die exportiert werden können oder nicht. Dann schreiben Sie eine zweite Funktion, die ein Wrapper für die Low-Level-Funktion ist und Werte für alle Details vorgibt. Siehe das nächste minimal Beispiel:

# Don't export this function 
.use_me <- function(arg1, arg2, verbose = TRUE) { 
    if(verbose) message(paste(Sys.time(), 'working')) 
    pmax(arg1, arg2) 
} 

#' @export 
use_me <- function(arg1, ...) { 
    .use_me(arg1, 0, ...) 
} 

Dies ist sehr ähnlich wie Pythons Verwendung des einzelnen Unterstriches verhindern automatisch Objekte von Paketen zu laden. In beiden Fällen scheint die Praxis eine Benennungskonvention zu sein - außerhalb ihrer spezifizierten Verwendungen (in R ist das Verbergen des Objekts in der Umgebung) gibt es kein anderes Ergebnis der Verwendung der Notation (gemäß den Kommentaren zu this post zumindest, und nach dem Scannen der Dokumentation selbst).

Beispiele für die tatsächliche Verwendung finden Sie in der Hilfe für colSums oder trace.

+0

Schön! Wirklich nützlich, Ihr Kommentar, Danke HFBrowning. – PeCaDe