gpt4 book ai didi

r - 将函数参数传递给 dplyr 和 ggplot

转载 作者:行者123 更新时间:2023-12-03 21:22:46 28 4
gpt4 key购买 nike

我对如何将函数参数传递给 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 in UseMethod("group_by_") : no applicable method for 'group_by_' applied to an object of class "packageIQR"

对于最新版本的 dplyr,不推荐使用下划线的动词_()。似乎我们应该使用 quosures。

我的问题:
  • 有人可以澄清当前的最佳实践吗?
  • 上面的代码有什么问题? (请不要使用下划线 dplyr 动词..)
  • 在 ggplot 中,我知道我们可以使用 aes_string(),但在我的情况下,只有 aes 中的一个参数是从函数参数传递的。

  • 提前致谢。

    最佳答案

    ggplot2 v3.0.0 现在完全支持整洁评估所以没有必要使用 aes_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 由 reprex package (v0.2.0)。

    关于r - 将函数参数传递给 dplyr 和 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50494678/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com