我有一个使用ggplot2制作多面板绘图的函数:
plot_facet <- function(df, var.x, var.y, var.facet) {
p <- df %>%
ggplot(aes(x = {{var.x}}, y = {{var.y}})) +
geom_point()
if(!is_missing(var.facet)) p <- p + facet_grid({{var.facet}} ~ .)
return(p)
}
以下调用按预期工作:
plot_facet(mtcars, mpg, hp) + facet_grid(cyl ~ .)
但这个不行:
plot_facet(mtcars, mpg, hp, cyl)
我遇到了如下错误信息:
Error in is_reference(x, quote(expr = )) : object 'cyl' not found
我也尝试了以下方法,但仍然没有解决问题:
facet_grid(rows = vars({{var.facet}}))
我该如何解决这个问题?非常感谢您的帮助。
facet_grid({{var.facet}} ~.)
,将var.facet
转换为符号仍然会导致错误。我该如何使其正常工作?谢谢。 - Hi CLHfacet_wrap
的公式符号表示法。我不完全确定那里发生了什么,但似乎公式符号表示法现在已经过时了,也许是因为新的NSE风格存在问题(例如,在facet_wrap
的man页面中,公式样式被称为“经典界面”)? - starja