尝试遍历数据帧列表并对每个数据帧中的一列执行操作

时间:2021-07-23 03:30:38

标签: r

我试图遍历我拥有的数据帧列表以及每个数据帧中的同一列,对该列求和,然后除以该数据帧中的行数并打印出来。不向新数据框添加行/列,我只是希望它为每个数据框打印结果。我还希望它分别打印出每个数据帧中的行数。

我使用这个 for 循环创建了这个数据帧列表:

Coverages <- list('Cover 0', 'Cover 1', 'Cover 2', 'Cover 3')

DoublePostsLeftDFs <- c()

for (x in Coverages) {
    assign(paste("DoublePostsLeft", str_replace_all(x, " ", ""), sep=""), DoublePostsLeft %>% filter(CoverageScheme == x))
    name <- paste("DoublePostsLeft", str_replace_all(x, " ", ""), sep="")
    DoublePostsLeftDFs <- append(DoublePostsLeftDFs, name)

这成功地创建了我需要的所有数据框,但我不知道更好的方法来列出它们的名字,我怀疑我的问题来自哪里。到目前为止,这是我尝试做的:

for (x in DoublePostsLeftDFs) {
    row_number <- nrow(x)
    average <- sum(x$desired_column)/nrow(x)

    print(row_number)
    print(average)
}

当我使用它时出现错误:Error: $ operator is invalid for atomic vectors

然后我尝试了这个:

for (x in DoublePostsLeftDFs) {
    new <- as.data.frame(x)
    row_number <- nrow(new)
    average <- sum(new$desired_column)/nrow(new)

    print(row_number)
    print(average)
}

它所做的只是打印出来:

[1] 1
[1] 0

对于列表中的每个数据框。我怀疑这与我如何创建数据框列表有关?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我认为没有必要在此处创建数据框列表。这是你想要的吗?

library(dplyr)

result <- DoublePostsLeft %>%
  group_by(CoverageScheme) %>%
  summarise(nrow = n(), 
            average = mean(desired_column, na.rm = TRUE))

result