【发布时间】:2014-07-17 13:38:35
【问题描述】:
我有两个列表,每个列表中有两个矩阵.. 有没有办法对它们进行矩阵计算,即添加,其中来自matrix1的蓝色矩阵添加来自matrix2的蓝色矩阵,来自matrix1的红色矩阵和来自matrix2的红色矩阵 我能想到的唯一方法是在循环中完成它
> mymatrix1
$blue
[,1] [,2] [,3] [,4] [,5]
[1,] 10 1 2 13 1
[2,] 2 10 11 13 13
[3,] 3 14 1 15 9
[4,] 7 15 10 5 3
[5,] 12 8 11 3 13
$red
[,1] [,2] [,3] [,4] [,5]
[1,] 4 9 14 7 10
[2,] 15 9 7 13 13
[3,] 8 8 9 6 6
[4,] 8 13 15 1 7
[5,] 12 13 10 14 2
> mymatrix2
$blue
[,1] [,2] [,3] [,4] [,5]
[1,] 20 2 4 26 2
[2,] 4 20 22 26 26
[3,] 6 28 2 30 18
[4,] 14 30 20 10 6
[5,] 24 16 22 6 26
$red
[,1] [,2] [,3] [,4] [,5]
[1,] 12 27 42 21 30
[2,] 45 27 21 39 39
[3,] 24 24 27 18 18
[4,] 24 39 45 3 21
[5,] 36 39 30 42 6
请注意,我将有大约 10 个,并且不止一组(即蓝色、红色、绿色、紫色)
【问题讨论】:
-
每个列表中的颜色顺序是否相同?列表中是否有其他颜色不存在的颜色?如果订购相同,您可以使用
mapply("+", mymatrix1, mymatrix2, SIMPLIFY = F)或mapply(function(i1, i2) mymatrix1[[i1]] + mymatrix2[[i2]], seq_along(mymatrix1), match(names(mymatrix1), names(mymatrix2)), SIMPLIFY = F)之类的东西以防缺席。 -
是的,它们应该是相同的顺序。谢谢