【发布时间】:2020-04-16 23:33:23
【问题描述】:
我正在尝试有条件地重新排序列,但仅在由函数参数指定时。我看到其他示例展示了如何在 dplyr 语句中添加条件(如 this),但它对我不起作用。
我有一个包含两列的数据集,如下所示:
Role
1 Primary
2 Secondary
3 Primary
4 Primary
Zap
1 Enabled
2 Disabled
3 Enabled
4 Enabled
我的代码如下所示:
my_bar_chart <- function(data, column, title, change_order=FALSE){
toReturn <- data %>%
group_by({{column}}) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
mutate(column = reorder({{column}}, -count, FUN=identity)) %>%
ggplot(aes(x=column, y=count)) +
xlab(title)+
geom_col(fill='#cccccc') +
geom_text(aes(label = paste0(round(100 * percent, 1), "%")))
return(toReturn)
}
p1 <- my_bar_chart(mydata, Role, "EA5 Controller Role", TRUE)
p2 <- my_bar_chart(mydata, Zap, "Another title", FALSE)
这没问题,但是现在当我尝试开始工作时,是第二个 mutate 语句,当我将 TRUE 传递给函数 change_order 参数时,有条件地重新排序。这是不起作用的条件变异:
mutate(column = case_when(
change_order == TRUE ~ reorder({{column}}, -count, FUN=identity),
change_order == FALSE ~ column)) %>%
它给了我这个错误:
eval_tidy(pair$rhs, env = default_env) 中的错误:对象“角色”不 找到了
任何想法我做错了什么?
【问题讨论】: