Я видел использование функции %>%(процент больше, чем процент) в некоторых пакетах, таких как dplyr и rvest . Что это означает? Это способ писать закрывающие блоки в R?
%>%не имеет встроенного значения, но пользователь (или пакет) может определять операторы формы %whatever%любым способом. Например, эта функция вернет строку, состоящую из ее левого аргумента, за которым следуют запятая и пробел, а затем - правый аргумент.
"%,%"<-function(x, y) paste0(x,", ", y)# test run"Hello"%,%"World"## [1] "Hello, World"
Основание R обеспечивает %*%(матричное умножение), %/%(целочисленное деление), %in%(является ли lhs компонентом rhs?), %o%(Внешний продукт) и %x%(произведение кронекера). Неясно, %%попадает ли в эту категорию или нет, но она представлена по модулю.
expm Пакет R, expm, определяет матричный оператор мощности %^%. Для примера см Матрица мощности в R .
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/
wrapr Пакет R, wrapr, определяет канал точки, %.>%который является явной версией, %>%поскольку он не выполняет неявную вставку аргументов, а только заменяет явное использование точки с правой стороны. Это можно рассматривать как еще одну альтернативу %>%. См. Https://winvector.github.io/wrapr/articles/dot_pipe.html
один пишет следующее. В этом случае мы явно используем точку вместо исключения аргумента точки и заканчиваем каждый компонент конвейера присвоением переменной с именем dot ( .). После этого мы ставим точку с запятой.
1:8->.; sum(.)->.; sqrt(.)## [1] 6
Обновить Добавлена информация о пакете expm и упрощенный пример вверху. Добавлен постлогический пакет.
Изнутри R после загрузки magrittr получить помощь, используя: ?"%<>%"и т. Д.
Г. Гротендик
17
После прочтения ссылки, предложенной Г. Гротендиком, я понял , что%>% - это оператор, который выполняет функции конвейера . Это способствует удобочитаемости и продуктивности, поскольку легче отслеживать поток нескольких функций через эти каналы, чем возвращаться назад, когда несколько функций вложены.
?'%>%'
library(magrittr)
илиlibrary(dplyr)
сначала, а затем запустить?'%>%'
, хотя моя ссылка дает больше информацииОтветы:
% ...% операторов
%>%
не имеет встроенного значения, но пользователь (или пакет) может определять операторы формы%whatever%
любым способом. Например, эта функция вернет строку, состоящую из ее левого аргумента, за которым следуют запятая и пробел, а затем - правый аргумент.Основание 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.htmlmagittr также определил ряд других таких операторов. Смотрите раздел Дополнительно 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/ Идея в том, что вместо написания:
один пишет следующее. В этом случае мы явно используем точку вместо исключения аргумента точки и заканчиваем каждый компонент конвейера присвоением переменной с именем dot (
.
). После этого мы ставим точку с запятой.Обновить Добавлена информация о пакете expm и упрощенный пример вверху. Добавлен постлогический пакет.
источник
?"%<>%"
и т. Д.После прочтения ссылки, предложенной Г. Гротендиком, я понял , что%>% - это оператор, который выполняет функции конвейера . Это способствует удобочитаемости и продуктивности, поскольку легче отслеживать поток нескольких функций через эти каналы, чем возвращаться назад, когда несколько функций вложены.
источник
%>%
похож на pipe в Unix. Например, ввыход
combined_data_set
войдет вgroup_by
и его выход войдет вtally
, затем будет назначен окончательный выходa
.Это дает вам удобный и простой способ последовательного использования функций без создания переменных и хранения промежуточных значений.
источник
Пакеты R dplyr и sf импортируют оператор%>% из пакета R magrittr.
Справка доступна с помощью следующей команды:
Конечно, пакет должен быть загружен перед использованием, например,
Документация оператора прямой трубы magrittr дает хороший пример: когда функциям требуется только один аргумент, x%>% f эквивалентно f (x)
источник