R dplyr::mutate使用";传递所有列&引用;但按组限制行

R dplyr::mutate使用";传递所有列&引用;但按组限制行,r,dplyr,R,Dplyr,我相信这个问题已经在这里的某个地方得到了回答,但我似乎找不到答案 我使用的是dplyr,我试图使用mutate将数据帧中的所有列传递给自定义函数,但按groupby限制输入行。我猜,“.”操作符不是解决问题的方法,但还有什么可以推荐的呢 df <- data.frame(x = rep(1:4,each = 5),y= rnorm(20)) myfunc <- function(df) { print(paste(nrow(df),ncol(df)))

我相信这个问题已经在这里的某个地方得到了回答,但我似乎找不到答案

我使用的是dplyr,我试图使用mutate将数据帧中的所有列传递给自定义函数,但按groupby限制输入行。我猜,“.”操作符不是解决问题的方法,但还有什么可以推荐的呢

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(.))
我希望得到如下输出,即将数据帧的每个子集传递给自定义函数:

[1] "5 2"
[1] "5 2"
[1] "5 2"
[1] "5 2"
如何方便地将所有列传递给我的函数,但仍能让组工作


谢谢

看看
mutate\u all
这里似乎你应该使用
do()
这里:
df%>%group\u by(x)%%>%do(data.frame(x=.$x,y=myfunc(.))
还有
nest()
方法。查看此可能的副本:@MrFlick谢谢…这就是解决方案。我不确定我是否理解.x调用,但我将进一步研究do文档。您首先需要定义要对分组变量执行的操作!你可以做一些像..%>%总结(n=n(),m=mean(x))!
[1] "5 2"
[1] "5 2"
[1] "5 2"
[1] "5 2"