使用数据帧列表中数据帧的相应元素应用函数(例如均值)

Apply a function (e.g. mean) using corresponding elements of dataframes in list of dataframes

我有一个包含 10 个数据框的列表,其中每个元素代表一个不同的变量。

l1 <- list(d1=data.frame(a=c(1,2,3), b=c(4,5,6)),
           d2=data.frame(a=c(3,2,1), b=c(6,5,4)),
       d3=data.frame(a=c(2,2,2), b=c(5,5,5)))

我想对所有数据帧的每个对应元素取平均值。 因此,对于元素 [1,1],我的平均值为 (1,3,2)。 我可以为一个职位做到这一点:

m1_1<-mean(unlist(lapply(l1, function(x) (x[[1,1]]))))

有没有办法在整个数据帧上扩展索引? 谢谢, M.

我们可以用Reduce得到对应元素的和(+),然后除以list

length
Reduce(`+`, l1)/length(l1)

或者对于更一般的情况转换为 array,然后使用 apply

ar1 <- array(unlist(l1), dim = c(dim(l1[[1]]), length(l1)))
apply(ar1, 1:2, mean, na.rm = TRUE)
apply(ar1, 1:2, median, na.rm = TRUE)
apply(ar1, 1:2, sd, na.rm = TRUE)