函数中的 fct_reorder 出现问题

问题描述 投票:0回答:1

我正在尝试创建一个为不同数据列生成箱线图的函数。我想按 y 变量的升序对因子重新排序。当我不使用某个功能时它就有效,即

data(mpg)

ggplot(data = mpg) +
geom_boxplot(aes(fct_reorder(class, hwy), y = hwy))

结果如下:

但是如果我尝试创建一个函数来检查不同的变量,则会收到错误:

bp <- function(param){
parameter <- mpg[,param]
ggplot(data = mpg) +
geom_boxplot(aes(fct_reorder(class, parameter)))
}

bp("cty")

Error in fct_reorder(as.factor(class), parameter) : 
  length(f) == length(.x) is not TRUE

有人知道我做错了什么吗?

非常感谢!

r function ggplot2 boxplot
1个回答
0
投票

您可以在此处使用卷曲运算符:

bp <- function(param){
  ggplot(data = mpg) +
    geom_boxplot(aes(fct_reorder(class, {{param}}), {{param}}))
}

bp(hwy)

© www.soinside.com 2019 - 2024. All rights reserved.