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.

#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.

#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.

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.

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

Coletando dados do Google Trends no R e no Python

Como acompanhar e antecipar tendências de mercado? Independentemente da resposta final, os dados são o meio. Neste artigo, mostramos como obter dados do Google Trends em tempo quase real, utilizando as linguagens de programação R e Python.

Contribuição para a Volatilidade [Python]

A contribuição para a volatilidade fornece uma decomposição ponderada da contribuição de cada elemento do portfólio para o desvio padrão de todo o portfólio. Em termos formais, é definida pelo nome de contribuição marginal, que é basicamente a derivada parcial do desvio padrão do portfólio em relação aos pesos dos ativos. A interpretação da fórmula da contribuição marginal, entretanto, não é tão intuitiva, portanto, é necessário obter medidas que possibilitem analisar os componentes. Veremos portanto como calcular os componentes da contribuição e a porcentagem da contribuição. Vamos criar as respectivas medidas usando a linguagem de programação Python.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.