% ...% операторов
%>%
не имеет встроенного значения, но пользователь (или пакет) может определять операторы формы %whatever%
любым способом. Например, эта функция вернет строку, состоящую из ее левого аргумента, за которым следуют запятая и пробел, а затем - правый аргумент.
"%,%" <- function(x, y) paste0(x, ", ", y)
# test run
"Hello" %,% "World"
## [1] "Hello, World"
Основание R обеспечивает %*%
(матричное умножение), %/%
(целочисленное деление), %in%
(является ли lhs компонентом rhs?), %o%
(Внешний продукт) и %x%
(произведение кронекера). Неясно, %%
попадает ли в эту категорию или нет, но она представлена по модулю.
expm Пакет R, expm, определяет матричный оператор мощности %^%
. Для примера см Матрица мощности в R .
операторы В пакете операторов R определено большое количество таких операторов, как %!in%
(for not %in%
). См. Http://cran.r-project.org/web/packages/operators/operators.pdf
Трубы
magrittr В случае пакета %>%
magrittr R определил его, как описано в виньете magrittr. См. Http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html
magittr также определил ряд других таких операторов. Смотрите раздел Дополнительно Pipe Операторы предшествующего звена , которые обсуждаются %T>%
, %<>%
и %$%
и http://cran.r-project.org/web/packages/magrittr/magrittr.pdf для еще большего количества деталей.
dplyr Пакет dplyr R, используемый для определения %.%
аналогичного оператора; однако он устарел, и теперь dplyr рекомендует пользователям использовать то, %>%
что dplyr импортирует из magrittr и делает доступным для пользователя dplyr. Как упомянул Дэвид Аренбург в комментариях, этот вопрос SO обсуждает различия между ним и magrittr's %>%
: Различия между%.% (Dplyr) и%>% (magrittr)
pipeR Пакет R, pipeR, определяет %>>%
оператор, который похож на%>% magrittr и может использоваться как альтернатива ему. См. Http://renkun.me/pipeR-tutorial/
В пакете pipeR также определен ряд других таких операторов. См .: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic Пакет postlogic, определенный %if%
и %unless%
операторы.
wrapr Пакет R, wrapr, определяет канал точки, %.>%
который является явной версией, %>%
поскольку он не выполняет неявную вставку аргументов, а только заменяет явное использование точки с правой стороны. Это можно рассматривать как еще одну альтернативу %>%
. См. Https://winvector.github.io/wrapr/articles/dot_pipe.html
Причудливая трубка . На самом деле это не канал, а, скорее, какой-то умный базовый синтаксис, который работает аналогично каналам без фактического использования каналов. Это обсуждается в http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ Идея в том, что вместо написания:
1:8 %>% sum %>% sqrt
## [1] 6
один пишет следующее. В этом случае мы явно используем точку вместо исключения аргумента точки и заканчиваем каждый компонент конвейера присвоением переменной с именем dot ( .
). После этого мы ставим точку с запятой.
1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6
Обновить Добавлена информация о пакете expm и упрощенный пример вверху. Добавлен постлогический пакет.
?'%>%'