我确定这已经在这里的某个地方得到了答复,但是我似乎找不到。
我正在使用dplyr,并尝试使用 mutate 将数据帧中的所有列传递给自定义函数,但将输入行限制为 group_by 。我猜是“。”操作员不是要走的路,但可能还会建议什么?
df <- data.frame(x = rep(1:4,each = 5),y= rnorm(20))
myfunc <- function(df) {
print(paste(nrow(df),ncol(df)))
return(mean(df$x))
}
df %>% group_by(x) %>% mutate(y = myfunc(.))
下面是实际输出,表明它正在将整个数据帧传递给函数4次。
[1] "20 2"
[1] "20 2"
[1] "20 2"
[1] "20 2"
我希望获得如下所示的输出,即将数据帧的每个子集传递给自定义函数:
[1] "5 2"
[1] "5 2"
[1] "5 2"
[1] "5 2"
如何方便地将所有列传递给我的函数,但仍然使group_by工作?
谢谢