我有一个由3个不同的列(a,b和噪声)组成的数据帧 . 我想在两个第一列的所有 distinct 组合上应用函数以及第三个变量的平均值,并将其保存在名为c的新列中 . 我的第一个想法是使用以下代码解决它

library(dplyr)

df  <- data.frame(a = rep(c(1,2,3),each=9),
                   b = rep(c(1,2,3),length.out=3*9),
                   noise = rnorm(9*3*1000))

f <- function(a,b,c) a + b + c


result <- df %>% group_by(a,b) %>% summarise(c = f(a,b,mean(noise)))

令我惊讶的是,这给出了错误“错误:期望单个值” . 所以dlyr仍将a和b视为向量 . 因此,问题可以通过有些混乱的代码来解决

result <- df %>% group_by(a,b) %>% summarise(c = f(a[1],b[1],mean(noise)))

我的问题是:

  • 为什么dplyr将分组变量保持为向量(这有什么好处?)

  • 有没有更好的方法来使用dplyr解决这个问题?