6.2 Outros operadores
O pacote {magrittr}
possui outros operadores, que, embora sejam menos utilizados, também são úteis. São eles:
Assignment operator
%<>%
Operador tee
%T>%
Exposition operator
%$%
Imagine que queremos tirar a raiz quadrada de um vetor de números.
<- c(1, 2, 3, 4, 5)
x
%>% sqrt() x
## [1] 1.000000 1.414214 1.732051 2.000000 2.236068
Se quisermos sobrescrever o objeto x
com a raiz quadrada dos seus valores, basta utilizarmos o nosso bom e velho operador de atribuição <-
.
<- x %>% sqrt() x
Podemos, no entanto, utilizar o operador %<>%
para reescrever o código acima de uma maneira mais compacta.
<- c(1, 2, 3, 4, 5)
x %<>% sqrt() x
Além de mandar o objeto x
para o primeiro argumento da função sqrt()
, assim como o %>%
faria, esse operador também salva o resultado da operação de volta no objeto x
, o sobrescrevendo.
Este operador pode ser usado sempre que desejamos fazer algo da forma
<- objeto %>%
objeto funcao_1() %>%
funcao_2() %>%
...funcao_n()
O operador %T>%
retorna o valor do comando anterior a ele, não o resultado do lado direito como o %>%
faz. O seguinte exemplo vai imprimir na tela os valores de 1 a 10. Se usássemos o pipe, o código retornaria a soma dos dez números.
1:10 %T>% sum() %>% cat()
## 1 2 3 4 5 6 7 8 9 10
Neste caso, o operador não parece fazer sentido e apenas deixa o código mais complicado, mas se desejamos usar funções como cat()
ou plot()
que não retornam nada, o operador se torna muito útil.
# Vamos imprimir na tela os valores de 1 a 10 e depois soma-los.
1:10 %T>%
cat() %>%
sum()
## 1 2 3 4 5 6 7 8 9 10
## [1] 55
O operador %$%
pode ser utilizado para expor as colunas de um data frame para a função aplicada no lado direito.
# Podemos chamar qualquer coluna da base diretamente.
%$% mean(mpg) mtcars
## [1] 20.09062
Se não ficou claro o que esse operador está fazendo, imagine que ele transforma todas as colunas da base em objetos (assim como a nefasta função attach()
), mas sem salvar nada no nosso environment.
%$%
mtcars %>%
mpg mean() %>%
sqrt()
## [1] 4.482257
Ele faz um papel equivalente ao operador $
.
$mpg mtcars
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
%$% mpg mtcars
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
Para mais informações sobre o pipe
e outras funções do pacote {magrittr}
, visite a página Ceci n’est pas un pipe.