将矩阵列表子集化为较小矩阵列表

时间:2017-07-27 18:13:08

标签: r list matrix replace subset

我有1800个矩阵的列表,其尺寸为7 x 7.我正在尝试获取前2行和列的元素,并在对它们进行Map乘法之前将其转换为2 x 2矩阵的列表最终替换原始7 x 7矩阵列表中的值。

我的代码是:

     PreMultiply_matrixList <- list()
     PreMultiply_matrixList <- sapply(Probability_matrixList, "[", c(1:2),c(1:2))

Probability_matrixList是7 x 7矩阵的列表。

然而,PreMultiply_matrixList似乎只复制了每个矩阵的第一个元素,而不是2x2矩阵。

我也尝试过来自不同帖子的类似代码,例如:

PreMultiply_matrixList <- sapply(Probability_matrixList,"[",1:2,1:2)

你会怎么做?然后将(使用Map)与另一个列表相乘,然后替换原始Probability_matrixList上的值?

提前致谢。

1 个答案:

答案 0 :(得分:1)

第一步,根据上述评论:

PreMultiply_matrixList <- lapply(Probability_matrixList,"[",1:2,1:2)

第二步,使用map取决于你。

第三步,将新的2x2矩阵(我们称之为PostMultiply_matrixList)放入原始矩阵列表中,这可能有效:

Probability_matrixList2 <- lapply(1:length(Probability_matrixList),
 function(x) {
   Probability_matrixList[[x]][1:2,1:2] <- PostMultiply_matrixList[[x]]
   Probability_matrixList[[x]]
  })