Я пытаюсь написать функцию для передачи элементов в кавычках для построения нескольких ggplots. Следующий код отлично работает и делает то, что я хочу.
fig2.data %>%
ggplot(aes(x = Surgery, y = BALF_Protein, fill = Exposure)) +
stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge") +
stat_summary(geom = "bar", fun = mean, position = "dodge") +
theme_classic() +
scale_fill_manual(values=c("lightgrey","darkgrey")) +
facet_grid(cols = vars(Duration))
Используя это руководство, я создал следующую функцию и вызвал ее.
plotf <- function(x, y, fill, facet){
x_var <- enquo(x)
y_var <- enquo(y)
facet_var <- enquo(facet)
fill_var <- enquo(fill)
ggplot(fig2.data, aes(x = !!x_var, y = !!y_var, fill = !!fill_var)) +
stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge") +
stat_summary(geom = "bar", fun = mean, position = "dodge") +
theme_classic() +
scale_fill_manual(values=c("lightgrey","darkgrey")) +
facet_grid(cols = vars(!!facet_var))
}
plotf(x = "Surgery", y = "BALF_Protein", fill = "Exposure", facet = "Duration")
Мой график отображается без ошибок, но он не отображается так же. Что я делаю не так?
!!sym(varname)
или местоимение.data
, т. е. ..data[[varname]]
. В обоих случаях вам не нужно использовать enquo() ваши переменные. - person stefan   schedule 02.10.2020