Если вы согласны с тем, что входные данные для вашей функции являются строками символов, вы можете легко сделать это, используя функцию aes_string
с ggplot2, которая принимает эстетику в качестве строк. Функция ниже делает то, что вы хотите
make_boxplot = function(df, x_ax, y_ax){
group_text = paste0("cut_width(",x_ax,", 0.1)")
df %>%
ggplot(aes_string(x=x_ax, y=y_ax)) +
geom_boxplot(aes_string(group = group_text))
}
И вызов функции для получения того же результата, что и в вашем примере графика, будет make_boxplot(diamonds, "carat", "price")
Или, если вы хотите сохранить несколько нажатий клавиш и действительно не хотите вводить символьные строки для своей функции, вы можете просто использовать deparse(substitute())
внутри функции. то есть
make_boxplot = function(df, x_ax, y_ax){
x_ax=deparse(substitute(x_ax))
y_ax=deparse(substitute(y_ax))
group_text = paste0("cut_width(",x_ax,", 0.1)")
df %>%
ggplot(aes_string(x=x_ax, y=y_ax)) +
geom_boxplot(aes_string(group = group_text))
}
А теперь вы можете просто позвонить make_boxplot(diamonds, carat, price)