我试图创建一个函数,为不同的数据列生成箱线图。我想按照y变量的升序对因子进行重新排序。它在我不使用函数时有效,即,
data(mpg)
ggplot(data = mpg) +
geom_boxplot(aes(fct_reorder(class, hwy), y = hwy))
结果如下:
但是,如果我尝试使用map()
函数创建一个函数来检查不同的变量,我会得到一个错误:
bp <- function(param){
parameter <- mpg[,param]
ggplot(data = mpg) +
geom_boxplot(aes(fct_reorder(class, parameter)))
}
target_parameters <- c("hwy", "cty")
grid.arrange(grobs = map(target_parameters, bp))
Error in fct_reorder(as.factor(class), parameter) :
length(f) == length(.x) is not TRUE
有人知道我哪里做错了吗?
太感谢你了!
1条答案
按热度按时间7fhtutme1#
你的功能有几个问题。首先,你使用了一个名为
parameter
的参数,它应该是param
。其次,您还没有将变量Map到y轴(仅Map到x轴)。第三,字符串没有被转换为fct_reorder
中的列名如果您希望将变量作为字符串而不是空符号传递,则可以使用
.data[[param]]
这也适用于
map
示例: