如何在函数中编写facet_wrap(ggplot2)

时间:2016-11-17 01:25:56

标签: r ggplot2 data.table

我写了一个绘制条形图的函数。但是,当我接触到方向时,“〜”符号会使事情变得困难。

rf.funct <- function(dat, predictor, feature){
  ggplot(get(dat), aes(get(predictor), N)) +
    geom_bar(stat = 'identity') +
    facet_wrap(get(~feature)) # this is where the problem is
}

我尝试了以下内容:

facet_wrap((get(~feature))) # invalid first argument
facet_wrap(paste0("~ ", get(feature))) # object 'feature' not found

如何确保函数中包含'〜'符号?

1 个答案:

答案 0 :(得分:6)

您无需使用get。您已使用dat参数将数据框传递到函数中,因此只需将dat提供给ggplot,它将从其环境中获取数据数据。

rf.funct <- function(dat, predictor, feature) {
  ggplot(dat, aes_string(predictor, "N")) +
    geom_bar(stat = 'identity') +
    facet_wrap(feature)
}

predictorfeature参数应作为字符串输入。然后,您可以使用aes_string来指定美学。 facet_wrap现在可以直接使用字符向量,而不需要公式(正如@WeihuangWong所指出的那样)。