1

我对 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)))

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

4

2 回答 2

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))
}))
于 2013-02-25T21:09:25.127 回答
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]))
})
于 2013-02-25T20:58:39.347 回答