Widziałem użycie funkcji %>%(procent większy niż procent) w niektórych pakietach, takich jak dplyr i rvest . Co to znaczy? Czy jest to sposób na pisanie bloków zamykających w R?
Dzięki David! jbaums, niestety nie ma na ten temat żadnego dokumentu. ? '%>%' retuns "Brak dokumentacji dla '%>%' w określonych pakietach i bibliotekach"
alfakini
6
@alf. musisz library(magrittr)lub library(dplyr)najpierw, a następnie uruchom ?'%>%', chociaż mój link dostarcza więcej informacji
%>%nie ma wbudowanego znaczenia, ale użytkownik (lub pakiet) może swobodnie definiować operatory formularza %whatever%w dowolny sposób. Na przykład ta funkcja zwróci ciąg składający się z lewego argumentu, po którym następuje przecinek i spacja, a następnie jest to prawy argument.
"%,%"<-function(x, y) paste0(x,", ", y)# test run"Hello"%,%"World"## [1] "Hello, World"
Podstawa R zapewnia %*%(mnożenie macierzy), %/%(dzielenie całkowite), %in%( %o%czy %x%lhs jest składową prawej strony?), (Iloczyn zewnętrzny) i (iloczyn Kroneckera). Nie jest jasne, czy %%należy do tej kategorii, czy nie, ale reprezentuje modulo.
expm Pakiet R, expm, definiuje operator potęgi macierzy %^%. Na przykład patrz moc matrycy w R .
dplyr Pakiet dplyr R używany do definiowania %.%operatora, który jest podobny; jednak został on przestarzały i dplyr zaleca teraz, aby użytkownicy używali tego, %>%który dplyr importuje z magrittr i udostępnia użytkownikowi dplyr. Jak wspomniał David Arenburg w komentarzach, to pytanie SO omawia różnice między nim a magrittr's %>%: Różnice między%.% (Dplyr) a%>% (magrittr)
pipeR Pakiet R, pipeR, definiuje %>>%operator podobny do%>% magrittr i może być używany jako alternatywa dla niego. Zobacz http://renkun.me/pipeR-tutorial/
wrapr Pakiet R, wrapr, definiuje potok kropkowy, %.>%który jest jawną wersją programu %>%, ponieważ nie wstawia niejawnie argumentów, a jedynie zastępuje jawne użycie kropki po prawej stronie. Można to uznać za inną alternatywę dla %>%. Zobacz https://winvector.github.io/wrapr/articles/dot_pipe.html
jeden pisze co następuje. W tym przypadku jawnie używamy kropki zamiast wymazywać argument kropkowy i kończymy każdy składnik potoku przypisaniem do zmiennej, której nazwa to dot ( .). Po tym wpisujemy średnik.
1:8->.; sum(.)->.; sqrt(.)## [1] 6
Aktualizacja Dodano informacje o pakiecie expm i uproszczony przykład u góry. Dodano pakiet postlogiczny.
Z poziomu R po załadowaniu magrittr uzyskaj pomoc przy użyciu:, ?"%<>%"itp.
G. Grothendieck
17
Po przeczytaniu linku zaoferowanego przez G.Grothendiecka zrozumiałem, że%>% jest operatorem, który potokuje funkcje. Zwiększa to czytelność i produktywność, ponieważ łatwiej jest śledzić przepływ wielu funkcji przez te rury niż cofać się, gdy wiele funkcji jest zagnieżdżonych.
?'%>%'
library(magrittr)
lublibrary(dplyr)
najpierw, a następnie uruchom?'%>%'
, chociaż mój link dostarcza więcej informacjiOdpowiedzi:
% ...% operatorów
%>%
nie ma wbudowanego znaczenia, ale użytkownik (lub pakiet) może swobodnie definiować operatory formularza%whatever%
w dowolny sposób. Na przykład ta funkcja zwróci ciąg składający się z lewego argumentu, po którym następuje przecinek i spacja, a następnie jest to prawy argument.Podstawa R zapewnia
%*%
(mnożenie macierzy),%/%
(dzielenie całkowite),%in%
(%o%
czy%x%
lhs jest składową prawej strony?), (Iloczyn zewnętrzny) i (iloczyn Kroneckera). Nie jest jasne, czy%%
należy do tej kategorii, czy nie, ale reprezentuje modulo.expm Pakiet R, expm, definiuje operator potęgi macierzy
%^%
. Na przykład patrz moc matrycy w R .operatorzy W pakiecie operatorów R zdefiniowano dużą liczbę takich operatorów, takich jak
%!in%
(dla nie%in%
). Zobacz http://cran.r-project.org/web/packages/operators/operators.pdfRury
magrittr W przypadku
%>%
magrittr pakiet R zdefiniował go tak, jak zostało to omówione w winiecie magrittr. Zobacz http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.htmlmagittr zdefiniował również szereg innych takich operatorów. Zobacz sekcję rury operatorzy uprzedniej linku który omawia
%T>%
,%<>%
a%$%
i http://cran.r-project.org/web/packages/magrittr/magrittr.pdf jeszcze więcej szczegółów.dplyr Pakiet dplyr R używany do definiowania
%.%
operatora, który jest podobny; jednak został on przestarzały i dplyr zaleca teraz, aby użytkownicy używali tego,%>%
który dplyr importuje z magrittr i udostępnia użytkownikowi dplyr. Jak wspomniał David Arenburg w komentarzach, to pytanie SO omawia różnice między nim a magrittr's%>%
: Różnice między%.% (Dplyr) a%>% (magrittr)pipeR Pakiet R, pipeR, definiuje
%>>%
operator podobny do%>% magrittr i może być używany jako alternatywa dla niego. Zobacz http://renkun.me/pipeR-tutorial/Pakiet pipeR również zdefiniował szereg innych takich operatorów. Zobacz: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic Zdefiniowany pakiet postlogiczny
%if%
i%unless%
operatory.wrapr Pakiet R, wrapr, definiuje potok kropkowy,
%.>%
który jest jawną wersją programu%>%
, ponieważ nie wstawia niejawnie argumentów, a jedynie zastępuje jawne użycie kropki po prawej stronie. Można to uznać za inną alternatywę dla%>%
. Zobacz https://winvector.github.io/wrapr/articles/dot_pipe.htmlFajka Bizarro . To nie jest tak naprawdę potok, ale raczej sprytna podstawowa składnia działająca w sposób podobny do potoków bez faktycznego używania potoków. Jest to omówione na http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ Chodzi o to, aby zamiast pisać:
jeden pisze co następuje. W tym przypadku jawnie używamy kropki zamiast wymazywać argument kropkowy i kończymy każdy składnik potoku przypisaniem do zmiennej, której nazwa to dot (
.
). Po tym wpisujemy średnik.Aktualizacja Dodano informacje o pakiecie expm i uproszczony przykład u góry. Dodano pakiet postlogiczny.
źródło
?"%<>%"
itp.Po przeczytaniu linku zaoferowanego przez G.Grothendiecka zrozumiałem, że%>% jest operatorem, który potokuje funkcje. Zwiększa to czytelność i produktywność, ponieważ łatwiej jest śledzić przepływ wielu funkcji przez te rury niż cofać się, gdy wiele funkcji jest zagnieżdżonych.
źródło
%>%
jest podobny do potoku w systemie Unix. Na przykład wwyjście
combined_data_set
przejdzie do,group_by
a wyjście przejdzie dotally
, a następnie przypisane jest wyjście końcowea
.Daje to wygodny i łatwy sposób korzystania z funkcji w serii bez tworzenia zmiennych i przechowywania wartości pośrednich.
źródło
Pakiety R dplyr i sf importują operator%>% z pakietu R magrittr.
Pomoc jest dostępna za pomocą następującego polecenia:
Oczywiście paczka musi zostać wcześniej załadowana za pomocą np
Dokumentacja operatora potoku do przodu magrittr podaje dobry przykład: Gdy funkcje wymagają tylko jednego argumentu, x%>% f jest równoważne f (x)
źródło