Jua*_*n C 3 r ggplot2 tidyeval
我正在做一些有点简单的事情,但 tidyeval 总是让我困惑。在本例中,我有一个可以绘制某些内容的函数,并且之后我还想使用我正在绘制的列的名称来保存它,如下所示:
bar_plot= function(table, col_plot){
ggplot(table, aes(x=region,
y= {{col_plot}})) +
geom_bar(stat = "identity", fill="steelblue") +
ggsave(glue('results/{col_plot}.png'))
}
Run Code Online (Sandbox Code Playgroud)
该图没有问题,但我无法保存它(找不到该对象,因为它没有将其作为字符串读取)。尝试使用、、、quo但没有任何效果。在函数内将变量名转换为字符串的方法是什么?enquosym
对于可重复性来说,这已经足够了:
df = data.frame(region = c(1, 2), mean_age = c(20, 30))
Run Code Online (Sandbox Code Playgroud)
谢谢 !
你可以这样做:
bar_plot <- function(table, col_plot) {
p <- ggplot(table, aes(region, {{col_plot}})) + geom_col(fill = "steelblue")
ggsave(paste0('results/', deparse(substitute(col_plot)), '.png'), p)
}
bar_plot(df, mean_age)
Run Code Online (Sandbox Code Playgroud)
所以你有了:
./结果/mean_age.png