我对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)))
这个问题远远高于我的知识水平,但我认为我可以使用某种循环有效地做到这一点,但我不知道如何进行这样的循环。任何帮助将非常感激!提前谢谢。
答案 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]))
})