我对如何将函数参数传递到 dplyr 和 ggplot 代码中感到困惑。
我正在使用最新版本的 dplyr 和 ggplot2
这是我生成条形图的代码(清晰度与平均价格)
diamond.plot<- function (data, group, metric) {
group<- quo(group)
metric<- quo(metric)
data() %>% group_by(!! group) %>%
summarise(price=mean(!! metric)) %>%
ggplot(aes(x=!! group,y=price))+
geom_bar(stat='identity')
}
diamond.plot(diamonds, group='clarity', metric='price')
error:
Error in UseMethod("group_by_") : no applicable method for 'group_by_' applied to an object of class "packageIQR"
对于最新版本的 dplyr,带下划线的 verbs_() 已被轻微弃用。看来我们应该使用quosures。
我的问题:
提前致谢。
现在完全支持整齐评估ggplot2 v3.0.0 https://www.tidyverse.org/articles/2018/07/ggplot2-3-0-0/所以没有必要使用aes_
or aes_string
不再了。
library(rlang)
library(tidyverse)
diamond_plot <- function (data, group, metric) {
quo_group <- sym(group)
quo_metric <- sym(metric)
data %>%
group_by(!! quo_group) %>%
summarise(price = mean(!! quo_metric)) %>%
ggplot(aes(x = !! quo_group, y = !! quo_metric)) +
geom_col()
}
diamond_plot(diamonds, "clarity", "price")
创建于 2018-04-16代表包 http://reprex.tidyverse.org(v0.2.0)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)