2016-04-25 11 views
1

Was ist der Zweck der Verwendung von :: in R? Ich habe in einigen Anleitungen bemerkt, dass sie :: verwenden, um anzugeben, aus welchem ​​Paket die Funktion besteht. Lässt dies die Dinge schneller laufen oder zeigt es nur an, welche Pakete notwendig sind?Was ist der Zweck von "::" und warum ist es nützlich?

Gibt es auch andere Zwecke/Verwendungen für ::?

Snippet aus ggplot2 Paket Einführung:

grid::polygonGrob(
     coords$x, coords$y, 
     default.units = "native", 
     gp = grid::gpar(
     col = first_row$colour, 
     fill = scales::alpha(first_row$fill, first_row$alpha), 
     lwd = first_row$size * .pt, 
     lty = first_row$linetype 
    ) 
+2

Wenn zwei Pakete Funktionen mit demselben Namen haben, dann verwenden Sie 'pkg :: fn' anstelle von' library (pkg); fn' ist sicherer (da es Verwirrung und Namenskonflikte vermeidet). Hier ist ein Beispiel: http://StackOverflow.com/Q/3241539 – Frank

+0

Ich dachte nicht, dass die Frage die gleiche war, noch beantwortete irgendeine der Antworten diese Frage direkt. –

Antwort

5

Zu jedem gegebenen Zeitpunkt ein Suchpfad auf der Grundlage der Reihenfolge der Ladepakete eingerichtet von Namensraum ist. Manchmal wird beim Laden eines Pakets eine Funktion mit dem gleichen Namen "maskiert", wie es bereits im Arbeitsbereich vorhanden war. Dies wird normalerweise zum Zeitpunkt des Ladens des neuen Pakets angekündigt, aber Benutzer können dieses Problem übersehen. Die Verwendung von "::" stellt sicher, dass auf eine bestimmte Funktion von dem gewünschten Paket mit der richtigen Umgebung zugegriffen wird. Der Versuch, eine Funktion mit einem zweiten Bibliotheksaufruf erneut zu laden, würde fehlschlagen, weil die Funktion library() prüft, ob die Bibliothek bereits geladen ist, und einfach nichts tut, wenn sie sich im Suchpfad befindet.