【发布时间】:2020-04-12 20:30:15
【问题描述】:
我找不到这个简单问题的答案:
我想创建一个 ggplot。 aes 参数部分来自向量,部分直接分配。
names(mydt)
"gender" "cat1" "category_b" "value"
category_a <- "cat1"
plot.sum <- mydt %>%
dplyr::group_by(category_a, category_b) %>%
ggplot(aes(x = category_a, y = N, fill = category_b)) +
geom_bar(position="stack", stat="identity")
plot.sum
这不起作用,我得到一个错误:
错误:category_a 列未知
我认为这是因为 R 期望 category_a 是 mydt 中的一列,而是从向量“cat1”中获取一个字符项,该向量在 mydt 中不存在 - 如果我错了,请纠正我?
如何解决?
最终目标是把这个变成一个函数:
make.plot.sum <- function (data, group_by1, group_by2, position){
data %>%
dplyr::group_by(group_by1, group_by2) %>%
ggplot(aes(x = group_by1, y = N, fill = group_by2)) +
geom_bar(position="position", stat="identity")
plot.sum
return(plot.sum)
}
make.plot.sum(mydt, category_a, category_b, stack)
【问题讨论】:
-
你试过
aes(x = {{group_by1}}, y = N, fill = {{group_by2}})吗? -
@teunbrand 我不确定 {{}} 代表什么,但似乎 eit 转换了 group_by1 t 纯文本,但它最初是一个大约 15 个级别的因子
-
好吧,
aes(x = .data[[group_by1]], y = N, fill = .data[[group_by2]])?我认为这篇非标准评估的帖子可以在这里找到:tidyverse.org/blog/2019/06/rlang-0-4-0