R dplyr :: mutate使用“。”传递所有列。但按group_by限制行

时间:2018-08-09 19:27:47

标签: r dplyr

我确定这已经在这里的某个地方得到了答复,但是我似乎找不到。

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

谢谢

0 个答案:

没有答案