这很好:
test <- function(x, y) {
ggplot(iris, aes_string(x = x, y = y)) +
geom_boxplot() +
xlab(x) +
coord_flip()
}
test('Species', 'Sepal.Width')
但这不是:
test <- function(x, y) {
ggplot(iris, aes_string(x = reorder(x, y, FUN = median), y = y)) +
geom_boxplot() +
xlab(x) +
coord_flip()
}
test('Species', 'Sepal.Width')
有什么想法吗?谢谢!
答案 0 :(得分:1)
aes_string
仅包含字符串,而不包含reorder
之类的函数。使用最新的ggplot2
,您可以使用ensym
将字符串转换为可以与aes()
而不是aes_string
一起使用的sumbols
test <- function(x, y) {
ggplot(iris, aes(x = reorder(!!ensym(x), !!ensym(y), FUN = median), y = !!ensym(y))) +
geom_boxplot() +
xlab(x) +
coord_flip()
}
test('Species', 'Sepal.Width')