R为多个数据帧创建循环-错误:没有适用于“ group_by_”的适用方法应用于“字符”类的对象

时间:2019-12-20 11:35:50

标签: r loops group-by

我正在努力在R中创建简单循环。有人对阅读有建议吗?

我有6个具有相同列的数据集,我想将每个数据框按列分组,并汇总columnx中的值。我使用下面的代码:

dats = list(df1,df2,df3,df4,df5,df6)

for (i in 1:length(dats)) {
names(dats[[i]]) = names(dats[[i]]) %>% group_by(columny) %>%
  summarize(columnx = sum(columnx, na.rm=TRUE))}

但是,我不断收到此错误:

Error in UseMethod("group_by_") : no applicable method for 'group_by_' applied to an object of class "character"

如何在R中创建像这样的简单循环?

2 个答案:

答案 0 :(得分:2)

如果您使用循环,则可能会使逻辑更难以遵循尝试映射的方式,感谢@JacobJacox提供的虚假dput

library(tidyverse)

df <- data.frame(x=rnorm(100),y=rnorm(100))
dats = list(df,df,df)

pipe <- . %>% 
  group_by(y) %>% 
  summarise(colsum = sum(x,na.rm = TRUE))

dats %>% map(pipe)

答案 1 :(得分:1)

尝试这样的事情:

df <- data.frame(x=rnorm(100),y=rnorm(100))
dats = list(df,df,df)

for (i in 1:length(dats)) {
  dats[[i]] = dats[[i]] %>% group_by(y) %>%
    summarize(columnx = sum(x, na.rm=TRUE))
}
dats[[1]]
# A tibble: 100 x 2
       y  columnx
   <dbl>    <dbl>
 1 -2.78 -0.362  
 2 -2.02  0.1000 
 3 -1.79  0.802  
 4 -1.74  0.784  
 5 -1.65 -0.117  
 6 -1.60  1.41   
 7 -1.60 -0.0381 
 8 -1.48 -0.573  
 9 -1.47  0.00229
10 -1.26  0.522  
# ... with 90 more rows