我想制作一个使用ggplot
并将facet_wrap
函数变量传递给 facet by 的函数。
我可以使用带引号的参数执行以下操作。
library(tidyverse)
my_grid_plot <- function(facet_by){
ggplot(mtcars, aes(wt, disp)) +
geom_point() +
facet_wrap(facet_by)
}
my_grid_plot(facet_by = 'am')
my_grid_plot(facet_by = 'vs')
my_grid_plot(facet_by = c('am', 'vs'))
但是,我想使用未引用的参数来做到这一点,例如
# does not work yet; this is what I want
my_grid_plot(facet_by = am)
my_grid_plot(facet_by = vs)
my_grid_plot(facet_by = c(am, vs))
我知道我可以使用vars
with facet_wrap
,例如
ggplot(mtcars, aes(wt, disp)) +
geom_point() +
facet_wrap(vars(am, vs))
所以我可以做这样的事情
my_grid_plot2 <- function(facet_by){
ggplot(mtcars, aes(wt, disp)) +
geom_point() +
facet_wrap(vars({{facet_by}}))
}
# works fine
my_grid_plot2(am)
my_grid_plot2(vs)
facet_by
但如果是向量,那将不起作用。
# does not work; obscure error
my_grid_plot2(c(am, vs))
那么有没有办法得到我想要的上面的东西,即在哪里facet_by
需要一个名称向量的单个变量名称?