R dplyr::mutate使用";传递所有列&引用;但按组限制行
我相信这个问题已经在这里的某个地方得到了回答,但我似乎找不到答案 我使用的是dplyr,我试图使用mutate将数据帧中的所有列传递给自定义函数,但按groupby限制输入行。我猜,“.”操作符不是解决问题的方法,但还有什么可以推荐的呢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)))
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"