在具有向量值参数的非标准评估函数中使用`facet_wrap`

问题描述

我想制作一个使用ggplotfacet_wrap的函数,并将函数变量传递给facet。

我可以使用带引号的参数执行以下操作。

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))

我知道我可以将varsfacet_wrap一起使用,例如

ggplot(mtcars,disp)) +
  geom_point() +
  facet_wrap(vars(am,vs))

所以我可以做这样的事情

my_grid_plot2 <- function(facet_by){
  ggplot(mtcars,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采用名称向量的单个变量名吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)