for循环遍历数据帧列表并将结果保存在新数据框中

时间:2013-01-28 12:40:22

标签: r

我想从数据帧列表中提取一些值,并将结果保存在新的数据帧中。这就是我的代码的样子:

for (i in 1:length(covpatient)){

    a <- names(covpatient[i])
    b <- sum(covpatient[[i]]$cov == 0)
    c <- sum(covpatient[[i]]$cov > 0 & covpatient[[i]]$cov <= 40)
    d <- sum(covpatient[[i]]$cov > 40 & covpatient[[i]]$cov <= 100)
    e <- sum(covpatient[[i]]$cov > 100)
    summary <- c(a,b,c,d,e)

}

因此,对于列表covpatient中的每个数据帧,我想创建一个由5个元素(a,b,c,d,e)组成的摘要变量。然后我想创建一个新的data.frame,它存储所有汇总值(5列和1行)。

有人可以帮我一把吗?

1 个答案:

答案 0 :(得分:4)

一种方法是将lapplyrbind一起使用,然后调用as.data.frame。由于没有可以使用的数据,我会给出一般的想法。

o <- lapply(1:length(covpatient), function(i) {
    a <- names(covpatient[i])
    b <- sum(covpatient[[i]]$cov == 0)
    c <- sum(covpatient[[i]]$cov > 0 & covpatient[[i]]$cov <= 40)
    d <- sum(covpatient[[i]]$cov > 40 & covpatient[[i]]$cov <= 100)
    e <- sum(covpatient[[i]]$cov > 100)
    c(a,b,c,d,e)
})
out <- as.data.frame(do.call(rbind, o))