Я не уверен, что ответ JD даст вам именно то, что вы хотите, так как результирующий объект не будет иметь те же размеры, что и a
, b
и т. Д.в список это хорошее начало, хотя.Затем вы можете поместить каждый столбец в новый список, cbind
этот список в матрицу и использовать 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) { # median
apply(do.call(cbind,lapply(myList,`[`,,j)), 1, median)
})
sapply(1:ncol(a), function(j) { # mean
apply(do.call(cbind,lapply(myList,`[`,,j)), 1, mean)
})
sapply(1:ncol(a), function(j) { # faster mean
rowMeans(do.call(cbind,lapply(myList,`[`,,j)))
})