% ...% 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.
"%,%" <- 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 .
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.pdf
Rury
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.html
magittr 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.html
Fajka 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ć:
1:8 %>% sum %>% sqrt
## [1] 6
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.
?'%>%'