问题描述
现有一列表,其中的每个元素都是矩阵。想对所有的矩阵进行求和,然后返回的结果仍然是同型矩阵。
算例和尝试
# a包含10个3×6的矩阵
a=lapply(1:10, function(x) matrix(sample(1:50, 18, replace=T), nrow=3))
# 直接使用求和函数会报错
sum(a)
# 在lapply函数中使用sum,只能分别对每个矩阵中的所有元素求和,而不能实现跨矩阵求和
lapply(a, sum)
# 采用simplify2array函数可以使列表转化为三维数组;
# 接下来大概该用apply,但是我试了试好像沿三个维度进行求和结果的维度都不对:
library(magrittr)
simplify2array(a) %>% apply(1, `+`)
simplify2array(a) %>% apply(2, `+`)
simplify2array(a) %>% apply(3, `+`)
现有答案
借助purrr
包的reduce
函数可以达成我想要的目的(参见Stack Overflow的这个帖子和这个帖子)。但如果不用极乐净土呢?