此函数(R)有什么问题(入门)

时间:2020-06-26 22:14:45

标签: r function dplyr

我正在尝试创建一个函数,该函数自动执行group_by并在具有感兴趣列(y)的特定数据帧(x)上汇总dplyr的命令。我写的代码是:

    mysummary <– function(x, y){
                     k = x %>%           
                           group_by(x$y) %>%
                           summarize(col.name = mean(var.name))
                     return(k)
                  }

这要么根本不起作用(例如,如果在group_by函数中仅将y作为参数,则没有称为y的列),或者在上面的当前代码中,无论我进行何种分组,返回的小标题都是相同的(在这种情况下,无论我用什么作为y参数,它总是按数据集中的变量year分组)。谁能帮忙解释为什么这行不通?

2 个答案:

答案 0 :(得分:1)

如果y是自变量,则我们不需要x$y内的group_by,它可以用ensym转换为符号并求值({{1 })。好处是它可以使用带引号或不带引号的'y'

!!

在这里,我们假设'var.name'作为数据集'x'中的列名

答案 1 :(得分:0)

我们可以使用curl-curly({{}})运算符:

library(dplyr)
library(rlang)

mysummary <– function(x, y) {
   k = x %>% group_by({{y}}) %>% summarize(col.name = mean(var.name))
   return(k)
}

,您可以将其用作:

data %>% mysummary(col_name)