% ...% operadores
%>%
não tem nenhum significado embutido, mas o usuário (ou um pacote) é livre para definir os operadores do formulário %whatever%
da maneira que quiser. Por exemplo, esta função retornará uma string consistindo em seu argumento esquerdo seguido por uma vírgula e espaço e então seu argumento direito.
"%,%" <- function(x, y) paste0(x, ", ", y)
# test run
"Hello" %,% "World"
## [1] "Hello, World"
A base de R fornece %*%
(multiplicação de matriz), %/%
(divisão inteira), %in%
(lhs é um componente do rhs?), %o%
(Produto externo) e %x%
(produto de kronecker). Não está claro se se %%
enquadra nesta categoria ou não, mas representa o módulo.
expm O pacote R, expm, define um operador de potência de matriz %^%
. Para um exemplo veja poder Matrix em R .
operadores O pacote de operadores R definiu um grande número de tais operadores, como %!in%
(para não %in%
). Consulte http://cran.r-project.org/web/packages/operators/operators.pdf
Tubos
magrittr No caso do %>%
pacote magrittr R o definiu conforme discutido na vinheta magrittr. Veja http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html
magittr também definiu vários outros operadores desse tipo. Veja a secção Adicional Cachimbo Operadores da ligação antes que discute %T>%
, %<>%
e %$%
e http://cran.r-project.org/web/packages/magrittr/magrittr.pdf para ainda mais detalhes.
dplyr O pacote dplyr R usado para definir um %.%
operador que é semelhante; entretanto, ele se tornou obsoleto e o dplyr agora recomenda que os usuários usem o %>%
que dplyr importa do magrittr e o torna disponível para o usuário dplyr. Como David Arenburg mencionou nos comentários, esta questão do SO discute as diferenças entre ela e a de magrittr %>%
: Diferenças entre%.% (Dplyr) e%>% (magrittr)
pipeR O pacote R, pipeR, define um %>>%
operador semelhante ao%>% de magrittr e pode ser usado como uma alternativa a ele. Veja http://renkun.me/pipeR-tutorial/
O pacote pipeR também definiu vários outros operadores desse tipo. Veja: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic O pacote postlogic definido %if%
e %unless%
operadores.
wrapr O pacote R, wrapr, define um dot pipe %.>%
que é uma versão explícita %>%
, pois não faz a inserção implícita de argumentos, mas apenas substitui os usos explícitos de ponto no lado direito. Isso pode ser considerado como outra alternativa para %>%
. Veja https://winvector.github.io/wrapr/articles/dot_pipe.html
Tubo bizarro . Este não é realmente um pipe, mas uma sintaxe base inteligente para funcionar de maneira semelhante aos pipes, sem realmente usar pipes. É discutido em http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ A ideia é que, em vez de escrever:
1:8 %>% sum %>% sqrt
## [1] 6
um escreve o seguinte. Nesse caso, usamos explicitamente o ponto em vez de eliminar o argumento do ponto e finalizar cada componente do pipeline com uma atribuição à variável cujo nome é ponto ( .
). Seguimos isso com um ponto e vírgula.
1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6
Atualização Adicionada informação sobre o pacote expm e exemplo simplificado no topo. Adicionado pacote postlogic.
?'%>%'