来自R中的数据帧列表

时间:2013-02-25 20:42:23

标签: r list dataframe

我对R来说比较新,并且有一个复杂的情况需要解决。我已经将超过1000个数据帧的列表上传到R并将此列表称为x。我想要做的是获取某些数据帧并获取整个数据帧的均值和方差(不包括每个数据帧的第一列)并将它们保存到两个单独的向量中。例如,我希望从列表(3)开始到列表(54)中的每个第三个数据帧的均值和方差。

所以我最终想要的是两个载体:

meanvector=c(mean(data frame(3)), mean(data frame(6)),..., mean(data frame(54)))
variancevector=c(var(data frame (3)), var(data frame (6)), ..., var(data frame(54)))

这个问题远远高于我的知识水平,但我认为我可以使用某种循环有效地做到这一点,但我不知道如何进行这样的循环。任何帮助将非常感激!提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用lapply并传递索引,如下所示:

ids <- seq(3, 54, by=3)
out <- do.call(rbind, lapply(ids, function(idx) {
    t <- unlist(x[[idx]][, -1])
    c(mean(t), var(t))
}))

答案 1 :(得分:1)

如果x是1000个数据帧的列表,则可以使用lapply返回此列表子集的均值和方差。

ix = seq(1, 1000, 3)
lapply(x[ix], function(df){
    #exclude the first column
    c(mean(df[,-1]), var(df[,-1]))
})