2010-08-16 52 views
5

给定一个2x2矩阵的列表(长度= n),我该如何计算所有这些矩阵的总和(并得到一个2x2矩阵)?计算列表或3D数组中的矩阵之和

我该怎么做,如果不是列表而是列表中有这些矩阵在(2 x 2 x n)维数组中?

+0

http://en.wikipedia.org/wiki/Matrix_addition – 2010-08-16 11:45:40

+0

@Xupypr MV如果没有'r'标签就足够了。 – Brani 2010-08-16 11:59:37

回答

7

的总和列表中的矩阵:

Reduce("+", matrix_list) 
+0

非常优雅。我尝试了'do.call'没有成功。我认为我必须尝试理解并使用'Reduce'功能。 – Brani 2010-08-16 12:34:03

+0

任何人都知道为什么像'Map'和'Reduce'这样的函数式编程函数是大写的? – Vince 2010-08-16 14:54:03

4

我会惹阵列,所以如果你有一个list例如:

n <- 5 
someList <- lapply(1:n, function(i) matrix(1:4+(i-1)*4,2,2)) 

改造它到3d array

someArray <- array(unlist(someList), c(2,2,n)) 

现在你可以使用rowSums

rowSums(someArray, dims=2) 
#  [,1] [,2] 
# [1,] 45 55 
# [2,] 50 60 
+0

我很接近找到这个。这就是我缺少的dims参数。 – Brani 2010-08-16 12:31:41