我试图遍历我拥有的数据帧列表以及每个数据帧中的同一列,对该列求和,然后除以该数据帧中的行数并打印出来。不向新数据框添加行/列,我只是希望它为每个数据框打印结果。我还希望它分别打印出每个数据帧中的行数。
我使用这个 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
对于列表中的每个数据框。我怀疑这与我如何创建数据框列表有关?任何帮助将不胜感激。
答案 0 :(得分:3)
我认为没有必要在此处创建数据框列表。这是你想要的吗?
library(dplyr)
result <- DoublePostsLeft %>%
group_by(CoverageScheme) %>%
summarise(nrow = n(),
average = mean(desired_column, na.rm = TRUE))
result