Estou tentando criar uma função simples que utiliza verbos do pacote dplyr
pra funcionar, bem baseado na live do @clente sobre rlang
, mas o resultado tá saindo diferente do esperado:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dados = data.frame(x=c(1,1,1,1,2,2,2,2))
# Padrão esperado
dados |> count(x) |> mutate(freq=n/sum(n))
#> x n freq
#> 1 1 4 0.5
#> 2 2 4 0.5
coleta_porcentagens = function(.data, varname){
.data |>
count({{varname}}) %>%
mutate(freq = n/sum(n))
}
# Resposta errada
coleta_porcentagens(dados, "x")
#> "x" n freq
#> 1 x 8 1
Em vez de agrupar os resultados de acordo com o factor que eu passei, ele tá ignorando o argumento, e não entendo porque isso tá acontecendo. Houve alguma mudança recente no dplyr
ou rlang
que possa explicar isso?