如何在2D矩阵列表中计算平均值?

时间:2015-10-21 19:56:51

标签: r

我有一个2D矩阵列表,我想计算它的一些统计数据,例如计算平均值。我可以将列表转换为数组并使用如下的应用程序:

dat1<-list(a = matrix(seq(1,4),2,2), b= matrix(seq(5,8),2,2), c= matrix(seq(9,12),2,2))

# convert to array 
obs <-array(unlist(dat1), dim = c(2, 2, 3))
meanObs <- apply(obs, c(1,2), mean, na.rm = TRUE)

无论如何都要执行此操作而不将列表转换为数组?!!直接从列表中计算均值。 非常感谢!

1 个答案:

答案 0 :(得分:3)

既然它是你想要的意思,我想你可以做到

 Reduce("+",dat1)/length(dat1)

Reduce()成对地获取矩阵的总和。然后你只需要除以N.

这个 可以用于其他统计数据(例如Reduce(pmax,dat1)应该给你元素最大值)但如果你试图计算一些其他的汇总统计量(如中位数)会更难。在这种情况下,我不认为你可以避免(隐式或明确地)对矩阵的元素进行循环。