我正在尝试创建一个函数,该函数自动执行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分组)。谁能帮忙解释为什么这行不通?
答案 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)