我相信这已经在这里得到了解答,但我似乎无法找到它 .

我正在使用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工作?

谢谢