2016-02-06 56 views
5

Ich folge einem Tutorial in Rbloggers und fand die Verwendung von Doppel-Doppelpunkten, ich schaute online, aber ich konnte keine Erklärung für ihre Verwendung finden. Hier ist ein Beispiel für ihre Verwendung.Was sind die doppelten Doppelpunkte (: :) in R?

Ich verstehe, dass es einen Datenrahmen erstellt, aber ich verstehe ihren Zweck nicht.

+6

die Hilfedateien ... '? '::'' – user20650

+2

Danke, wusste ich nicht, wie die Charaktere in R helfen zugreifen! –

+1

'help (" :: ")' kann auch verwendet werden, wenn '?' Probleme bereitet. Funktionen können immer in Anführungszeichen geschrieben werden. –

Antwort

3

In mehreren Paketen können mehrere Funktionen mit demselben Namen vorhanden sein. Der doppelte Doppelpunkt-Operator ermöglicht es Ihnen, die spezifische Funktion angeben, die Sie wünschen:

package::functionname 
10

Wie Sie wahrscheinlich die Hilfeseite von nachgeschlagen haben jetzt Nutzung von :: hilft, die genaue Funktion von diesem bestimmten Paket zugreifen. Wenn Sie dplyr laden wahrscheinlich eine Meldung bekam wie folgt ..

The following objects are masked from ‘package:base’: 
     intersect, setdiff, setequal, union 

So zum Beispiel, wenn Sie intersect Funktion von dplyr oder Basispaket verwenden möchten, müssen Sie die :: Doppel Doppelpunkte angeben verwenden. Verbrauch wird als

mtcars$model <- rownames(mtcars) 
first <- mtcars[1:20, ] 
second <- mtcars[10:20, ] 
dplyr::intersect(first, second) 
base::intersect(first, second) 

-Update folgt: hinzugefügt zusätzliche Erklärung

Hinweis: Die Reihenfolge Sie laden Bibliotheken den bevorzugten Zugang von den spezifischen Funktionen bestimmen. Entwickler unterschiedlicher Pakete verwenden normalerweise die gleichen Funktionsnamen. Wenn R jedoch auf eine Funktion trifft, durchläuft es die verschiedenen Bibliotheken, die die jeweilige Sitzung sequenziell geladen hat. Sie können die Pakete in einer Sitzung überprüfen, indem (.packages())

[1] "tidyr"  "data.table" "dplyr"  "stats"  
[5] "graphics" "grDevices" "utils"  "datasets" 
[9] "methods" "base"  

laufen Wie Sie oben in meinem Beispiel Sitzung sehen können, ist tidyr die letzte Bibliothek, die ich geladen, die r-Sitzung erster Eintrag ist. Also, wenn Sie irgendeine Funktion in Ihrem Code verwenden, wird zuerst in tidyr gesucht -> dann data.table -> dann dplyr und so weiter, schließlich wird das base Paket nachgeschlagen. Also, in diesem Prozess, wenn es einen Funktionsnamen gibt, der sich zwischen Paketen überlappt, wird derjenige, der die letzte geladen hat, die vorherigen Masken überlagern. Um diese Maskierung zu vermeiden, geben Sie in R-Code an, wo nach der Funktion gesucht werden soll. Daher wird hier base::intersect die Funktion aus der Basisbibliothek anstelle der dplyr verwenden. Alternativ können Sie das Laden der vollständigen Bibliothek vermeiden. Da gibt es Positives und Negatives. Lesen Sie die Links und erfahren Sie mehr.

ausführen und überprüfen Sie die Unterschiede. Hier sind einige Ressourcen für Sie, um ein Verständnis zu bekommen.

Compare library(), require(), ::

Namespace