我有一个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)
无论如何都要执行此操作而不将列表转换为数组?!!直接从列表中计算均值。 非常感谢!
答案 0 :(得分:3)
既然它是你想要的意思,我想你可以做到
Reduce("+",dat1)/length(dat1)
Reduce()
成对地获取矩阵的总和。然后你只需要除以N.
这个 可以用于其他统计数据(例如Reduce(pmax,dat1)
应该给你元素最大值)但如果你试图计算一些其他的汇总统计量(如中位数)会更难。在这种情况下,我不认为你可以避免(隐式或明确地)对矩阵的元素进行循环。