Вот мой пример функции. В качестве взлома я дважды передаю имя столбца: один раз как переменную и еще раз как имя переменной. Я хотел бы просто передать его один раз, без кавычек.
split_by_quartile <- function(some_tibble, col_name_fn, col_name_text){
# get the upper quartile of the value
this_threshold <- some_tibble %>% summarize(this_q = quantile({{col_name_fn}}, 0.75)) %>% pull(this_q) %>% unique
# filter using that value and create a label
some_tibble_upper_bit <- some_tibble %>%
filter({{col_name_fn}} > this_threshold) %>% # filter using that value
mutate(set = paste0(col_name_text, ">", round(this_threshold, 1), ", n=", label_comma()(n())))
}
и вот как я использую эту функцию и вывод
figure1_data <- bind_rows(
split_by_quartile(as_tibble(mtcars), col_name = disp, col_name_text="disp"),
split_by_quartile(as_tibble(mtcars), col_name = hp, col_name_text="hp")
)
ggplot(figure1_data, aes(y=set, x=mpg)) +
geom_boxplot()
Это наиболее многообещающая R-страница: https://dplyr.tidyverse.org/articles/programming.html. Он показывает, как использовать синтаксис клея в сочетании с: =, чтобы использовать имена переменных в имени выходной переменной, но не в выходном значении.
Спасибо за любую помощь!