Jak zapewne spojrzał na stronie pomocy już wykorzystanie ::
ułatwia dostęp do dokładnej funkcji z tego konkretnego pakietu. Podczas ładowania dplyr
prawdopodobnie dostał wiadomość następująco ..
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
Tak więc, na przykład, jeśli chcesz korzystać z funkcji intersect
dplyr lub pakietu podstawowego, należy określić przy użyciu ::
podwójne dwukropki. Wykorzystanie będzie następująca
mtcars$model <- rownames(mtcars)
first <- mtcars[1:20, ]
second <- mtcars[10:20, ]
dplyr::intersect(first, second)
base::intersect(first, second)
Aktualizacja: Dodano dodatkowe wyjaśnienie
Uwaga: Sekwencja załadować biblioteki ustalenia preferencyjnego dostępu do konkretnych funkcji. Twórcy różnych pakietów mają tendencję do używania tych samych nazw funkcji. Jednakże, gdy R napotka funkcję, przechodzi przez różne biblioteki, które konkretna sesja ładowała sekwencyjnie. Można sprawdzić pakiety w sesji uruchamiając (.packages())
[1] "tidyr" "data.table" "dplyr" "stats"
[5] "graphics" "grDevices" "utils" "datasets"
[9] "methods" "base"
Jak widać na moim przykładzie sesji powyżej tidyr
jest ostatni biblioteki I załadowany, która jest sesja r 1-ty wpis. Tak więc, gdy użyjesz jakiejkolwiek funkcji w kodzie, najpierw jest ona przeszukiwana w tidyr
-> następnie data.table
-> następnie dplyr
itd., Wreszcie pakiet base
jest sprawdzany. Tak więc w tym procesie, gdy nazwa funkcji nakłada się na siebie, ta, która ładowała ostatnią, maskuje poprzednie. Aby uniknąć tego maskowania, w kodzie R należy określić, gdzie szukać tej funkcji. Stąd, tutaj base::intersect
, użyje funkcji z biblioteki bazowej zamiast z dplyr
. Możesz też użyć, aby uniknąć ładowania pełnej biblioteki. Są w tym pozytywne i negatywne. Przeczytaj linki i dowiedz się więcej.
uruchom i sprawdź różnice. Oto kilka zasobów, aby uzyskać zrozumienie.
Compare library(), require(), ::
Namespace
zobaczyć pliki pomocy ... '? '::'' – user20650
Dzięki, nie wiedziałem, jak uzyskać dostęp do znaków pomóc w R! –
'help (" :: ")' może być również użyty, jeśli '?' Powoduje problemy. Funkcje zawsze można zapisać w cudzysłowach. –