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
.
Sie können 'ls (all.names = TRUE)' verwenden, um alle Objektnamen – akrun
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
Sie können [hier] (http://stackoverflow.com/questions/7526467/what-does-the-dot-mean-in-r-personal-preference-naming -convention-or-more) – akrun