Согласно этой статье , последняя версия rlang
и glue
позволяет объединить туннелирование {{ myobj }}
в строку glue
:
library(dplyr)
library(rlang)
library(glue)
mean_by <- function(data, by, var, prefix = "avg") {
data %>%
group_by({{ by }}) %>%
summarise("{prefix}_{{ var }}" := mean({{ var }}, na.rm = TRUE))
}
iris %>% mean_by(Species, Sepal.Width)
#> # A tibble: 3 x 2
#> Species avg_Sepal.Width
#> <fct> <dbl>
#> 1 setosa 3.43
#> 2 versicolor 2.77
#> 3 virginica 2.97
Но если Я хочу комбинировать другую сторону уравнения, я не могу этого сделать:
analyze_by <- function(data, by, var, prefix = "avg") {
data %>%
group_by({{ by }}) %>%
summarise(analysis = glue("{ prefix } by {{ var }}"))
}
iris %>% analyze_by(Species, Sepal.Width)
#> # A tibble: 3 x 2
#> Species analysis
#> <fct> <glue>
#> 1 setosa avg by { var }
#> 2 versicolor avg by { var }
#> 3 virginica avg by { var }
Как лучше всего решить эту проблему?