2014-12-09 32 views
10

Obecnie buduję pakiet i zastanawiałem się, czy istnieje sposób na wywołanie operatora %>% z dplyr bez faktycznego dołączania pakietu dplyr. Na przykład przy każdej funkcji wyeksportowanej z pakietu można wywołać ją dwukrotnym dwukropkiem (::). Więc jeśli chcę użyć funkcji group_by bez dołączania dplyr, wpiszę dplyr::group_by. Czy jest coś podobnego dla operatorów?Używanie operatora%>% z dplyr bez ładowania dplyr w R

+4

Myślę, że funkcja '%>%' jest faktycznie importowana z 'pkg: magrittr'. Będziesz musiał zacytować lub cofnąć '%>%' –

+1

Będziesz musiał użyć 'magrittr :: \'%>% \ '' – Andrie

+0

Dzięki za pomoc! –

Odpowiedz

14

Możesz odwoływać się do dowolnego obiektu o niestandardowej nazwie, umieszczając go w tylnych odsłonach. Oznacza to, że można to zrobić:

`%>%` <- magrittr::`%>%` 

ten określi operator %>% w bieżącym środowisku. Na przykład:

iris %>% head 

    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
1   5.1   3.5   1.4   0.2 setosa 
2   4.9   3.0   1.4   0.2 setosa 
3   4.7   3.2   1.3   0.2 setosa 
4   4.6   3.1   1.5   0.2 setosa 
5   5.0   3.6   1.4   0.2 setosa 
6   5.4   3.9   1.7   0.4 setosa 
+0

Dziękuję bardzo Andrie! –

8

Najprostszym sposobem jest załadowanie pakietu magrittr, który wykonuje tylko orurowanie i jest oryginalnym źródłem %>%. Jeśli nie chcesz ładować żadnych pakietów, nadal możesz używać %>%, ale nie w tak naprawdę użyteczny sposób (chyba że zdefiniujesz to w swoim środowisku, jak sugeruje Andrie). Używanie go z :: pójdzie tak:

# standard use 
mtcars %>% summary() 
# :: use 
magrittr::"%>%"(mtcars, summary()) 

Naprawdę tracić przewagę czytelności/nie gniazdowania z tej metody.

Odkąd mówisz, że budujesz pakiet, powinieneś umieścić magrittr w imporcie, a nawet po prostu importować z nas i pobrać funkcję "%>%". See here, aby uzyskać więcej informacji.

2

Jeśli masz „dplyr” zainstalowany, ale nie załadowany można uzyskać wynik z:

dplyr::`%>%` # Note the backticks, although quotes work as well. 

który wyświetla kod, ale na dole można zauważyć, że jego otoczenie jest rzeczywiście NAMESPACE "magrittera", który "dplyr" importuje. Jak donoszą dwaj kompetentni respondenci, istnieje kilka sposobów użycia go jako funkcji, chociaż nie można go wstawiać między argumentami lhs i rhs, chyba że utworzysz kopię lokalną, która ma flankujące "%" lub połączenie to z nawiasami funkcyjnymi. Parser R nie zezwoli na:

> mtcars dplyr::"%>%" summary() 
Error: unexpected symbol in " mtcars dplyr"