我不确定JD的回答是否完全符合您的要求,因为结果对象的维度与a、b等不同。
将您的数据框放入列表中是一个好的开始。然后,您可以将每个列子集成一个新列表,将该列表合并为矩阵,并在其行上使用apply。
a <- data.frame(rnorm(10), runif(10))
b <- data.frame(rnorm(10), runif(10))
c <- data.frame(rnorm(10), runif(10))
d <- data.frame(rnorm(10), runif(10))
myList <- list(a,b,c,d)
sapply(1:ncol(a), function(j) {
apply(do.call(cbind,lapply(myList,`[`,,j)), 1, median)
})
sapply(1:ncol(a), function(j) {
apply(do.call(cbind,lapply(myList,`[`,,j)), 1, mean)
})
sapply(1:ncol(a), function(j) {
rowMeans(do.call(cbind,lapply(myList,`[`,,j)))
})
lapply(c(a, b), mean)
,那就不对了。这会给我每列单独的平均值,而不是跨数据框的平均值。 - tkerwin