使用group_by和piping函数循环数据帧列表?

使用group_by和piping函数循环数据帧列表?,r,R,我有一个数据帧列表,我正在尝试应用一个脚本,该脚本适用于单个数据帧。 脚本的一部分同时使用管道和编组方式: df2 <- df1 %>% group_by (col1) %>% summarise(newcol = sum(col2)) df2% 分组依据(col1)%>% 总结(newcol=总和(col2)) 我已经尝试了lapply的各种循环或变体,但还没有找到一种方法让它能够处理数据帧列表,在这些数据帧列表中,它可以是: mylist2 <- mylist1

我有一个数据帧列表,我正在尝试应用一个脚本,该脚本适用于单个数据帧。 脚本的一部分同时使用管道和编组方式:

df2 <- df1 %>%
group_by (col1) %>%
summarise(newcol = sum(col2))
df2%
分组依据(col1)%>%
总结(newcol=总和(col2))
我已经尝试了lapply的各种循环或变体,但还没有找到一种方法让它能够处理数据帧列表,在这些数据帧列表中,它可以是:

mylist2 <- mylist1 %>%
group_by (col1) %>%
summarise(newcol = sum(col2))
mylist2%
分组依据(col1)%>%
总结(newcol=总和(col2))
但显然,改变了使用循环或重叠的方式。我可能在这里遗漏了一些简单的东西,但如果能得到一些帮助,我将不胜感激。谢谢


PS-我试图提供列表中的数据,但无法提供可复制的样本

这里有一个
tidyverse
方法

# generate some data
mylist1 <- replicate(2, data.frame(col1 = rep(letters[1:2], 2),
                                   col2 = 1:4), 
                     simplify = FALSE)

library(purrr)
library(dplyr)
mylist1 %>%
  map(., ~ group_by(., col1) %>%
        summarise(new_col = sum(col2)))
#[[1]]
# A tibble: 2 x 2
#  col1  new_col
#  <fct>   <int>
#1 a           4
#2 b           6

#[[2]]
# A tibble: 2 x 2
#  col1  new_col
#  <fct>   <int>
#1 a           4
#2 b           6

如果数据帧具有相同的列,那么绑定它们也可能是一个不错的选择:
mylist1%>%bind\u rows(.id=“id”)%%>%group\u by(id,col1)%%>%summary\u at(“col2”,sum)
lapply(mylist1, function(x)
  tapply(X = x[["col2"]], INDEX = x[["col1"]], FUN = 'sum'))
#[[1]]
#a b 
#4 6 

#[[2]]
#a b 
#4 6