我正在努力在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中创建像这样的简单循环?
答案 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