R如何从相同尺寸矩阵的列表中生成汇总矩阵?

时间:2018-10-03 09:34:31

标签: r list matrix

说一个尺寸相同的矩阵列表(超过1000个矩阵,每个矩阵具有相同的行和列),但为简单起见,示例列表的长度为3。例如,列表a:

a <- list(A=matrix(c(1:6),2,3),
          B=matrix(c(2:7),2,3),
          C=matrix(c(3:8),2,3))
> a
$A
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

$B
     [,1] [,2] [,3]
[1,]    2    4    6
[2,]    3    5    7

$C
     [,1] [,2] [,3]
[1,]    3    5    7
[2,]    4    6    8

我想生成一个汇总矩阵M。M具有与a中的每个矩阵相同的暗角。 M中的每个元素都是一个数字,该数字在列表中每个矩阵的相同位置计数,其中有多少个数字大于特定值g_value

例如,如果g_value = 2等于M[1,1],则1等于C[1,1],因为A[1,1], B[1,1], C[1,1]中只有M> 2。 因此,> M [,1] [,2] [,3] [1,] 1 3 3 [2,] 2 3 3 应该是如下矩阵:

TURE

使用循环将列表中的值更改为FALSE> b <- list() > for(i in 1:length(a)){ + b[[i]] = a[[i]] > 2 + } > b [[1]] [,1] [,2] [,3] [1,] FALSE TRUE TRUE [2,] FALSE TRUE TRUE [[2]] [,1] [,2] [,3] [1,] FALSE TRUE TRUE [2,] TRUE TRUE TRUE [[3]] [,1] [,2] [,3] [1,] TRUE TRUE TRUE [2,] TRUE TRUE TRUE 之后,我再也做不了了。有人可以帮我吗?预先感谢。

{{1}}

1 个答案:

答案 0 :(得分:2)

尝试以下操作:

a <- list(A = matrix(1:6, 2, 3),
          B = matrix(2:7, 2, 3),
          C = matrix(3:8, 2, 3))

Reduce("+", lapply(a, function (x) x > 2))