Novo operador pipe do R

Lançada em Maio, a versão 4.1 do R trouxe algumas novidades para os usuários, como uma nova sintaxe de função anônima e uma nova engine gráfica. Entretanto, a mudança mais substancial foi a inclusão de um operador pipe nativo, o "|>". Para quem, como eu, está acostumado a utilizar o operador "%>%" do pacote magritt/tidyverse, a forma de utilização é bastante semelhante. Lembrando que operador pipe tem a função de permitir o encadeamento de uma função após a outra sem precisar criar variáveis intermediárias ou utilizar parênteses intermináveis.

A utilidade principal do pipe é melhorar a leitura do código. Por exemplo, todos as maneiras abaixo retornam o mesmo resultado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Variáveis intermediárias
mtcars_filt = filter(mtcars, drat > 3)
mtcars_group = group_by(mtcars_filt, gear)
mtcars_final = summarise(mtcars_group, hp = mean(hp))
 
#Utilizando parênteses
 
mtcars_final = summarise(group_by(filter(mtcars, drat > 3), gear), hp = mean(hp))
 
#Pipe
 
mtcars_final = mtcars %>%
filter(drat > 3) %>%
group_by(gear) %>%
summarise(hp = mean(hp))

Para utilizar o novo pipe, a sintaxe é exatamente a mesma, nesse caso.

1
2
3
4
5
6
7
#Novo pipe
 
mtcars_final = mtcars |>
filter(drat > 3) |>
group_by(gear) |>
summarise(hp = mean(hp))
<pre>

A vantagem mais óbvia desse novo pipe é que a utilização não requer o uso de pacotes adicionais. Entretanto, se a primeira coisa que você faz quando abre um novo script do R é digitar "library(tidyverse)", isso pode não fazer muita diferença. Além disso, ele é levemente mais eficiente, entretanto é uma diferença muito pequena para ser notada pelo usuário médio.

Agora, para quem pensa em atualizar o R e começar a utilizar o novo pipe, saiba que há dois principais problemas. O primeiro é que em alguns casos o novo pipe demanda uma sintaxe um pouco diferente. O pipe do magritt tem um elemento (".") que nós podemos colocar em casos em que o primeiro elemento da função não é lado esquerdo da expressão. Um desses casos é se estamos interessados em estimar uma regressão por pipe.

1
2
reg = mtcars %>%
lm(hp ~ gear, data = .)

O novo operador pipe não tem esse elemento. Para chegar ao mesmo resultado, precisamos fazer uma alteração, utilizando uma função anônima. Aliás, essa também é uma novidade do R 4.1, que criou o  \ (x), que nada mais é do que uma abreviação do "function(x)". O mesmo código acima fica bem menos legível.

1
2
reg = mtcars |>
(\ (x) lm(hp ~ gear, data = x))()

 

A outra dificuldade é a utilização deste pipe só é possível para usuários do R 4.1, evidentemente. Códigos escritos com esse operador não funcionarão em versões antigas do R, o que pode ser um entrave para quem trabalha com compartilhamento de código.

Assim, a adoção do novo pipe pela comunidade ainda deve demorar um tempo (isso, se de fato ela ocorrer). Portanto, a recomendação, por enquanto, é aguardar um pouco mais para substituir os pipe do magritt pelo novo pipe.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

O que são Agentes de IA?

O que é um agente e como ele funciona? Como agentes tomam decisões usando racioncínio e planejamento? Neste artigo, nosso objetivo é investigar estas questões para construir um conhecimento fundamental sobre AI agents.

As diferentes formas de avaliar o erro de um modelo de previsão

Existem tantas siglas para métricas de desempenho de modelos preditivos que é fácil se perder na sopa de letrinhas. Neste artigo, fornecemos uma visão geral das principais métricas para avaliar e comparar modelos de regressão e classificação, usando exemplos com dados em Python.

Previsão do CPI usando text mining

Exploramos neste exercício, de forma similar a Ferreira (2022), a utilidade de tópicos latentes extraídos dos comunicados do FOMC, por um modelo LDA, na previsão da inflação norte-americana, medida pelo CPI. O objetivo é comparar um modelo econométrico simples, tal como um AR-GAP de Faust e Wright (2013), em especificações com e sem os fatores textuais.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!