将列表中未列出的矩阵转换回矩阵

Convert unlisted matrices within a list back to matrices

我有两个矩阵列表,每个列表由十个 5x5 矩阵组成:

List 1:
          [[1]]   
                A           B           C           D           E      
          [1,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000
          [2,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [3,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [4,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000 
          [5,]  1.0000000   2.0000000   1.0000000   2.0000000   1.0000000  
          
          .....
    
          [[10]]   
                 A           B           C           D           E      
          [1,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000
          [2,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [3,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [4,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000 
          [5,]  7.0000000   3.0000000   5.0000000   2.0000000   1.0000000  

List 2:
          [[1]]   
                A           B           C           D           E      
          [1,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000
          [2,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [3,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [4,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000 
          [5,]  2.0000000   2.0000000   2.0000000   2.0000000   2.0000000   
          
          .....
    
          [[10]]   
                 A           B           C           D           E      
          [1,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000
          [2,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [3,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [4,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 
          [5,]  1.0000000   1.0000000   1.0000000   1.0000000   1.0000000 

我使用 lapply(见下文)对两个列表求和,得到了我想要的求和结果。但是,它们不再出现在我的新列表中的矩阵中。我如何将它们转换回来,以便我可以将它们作为矩阵导出到 CSV 中?

lapply 使用代码:

lapply(seq_along(List1),function(i)
         unlist(List1[i])+unlist(List2[i])) 

Result:
[[1]]
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 E1 E2 E3 E4 
 3  3  3  3  4  4  4  4  3  3  3  3  4  4  4  4  3  3  3  3
...

[[10]]
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 E1 E2 E3 E4 
 8  8  8  8  4  4  4  4  6  6  6  6  3  3  3  3  2  2  2  2

使用双括号,以便您实际添加矩阵(而不是使用 unlist 转换为向量的 1 矩阵列表):

lapply(seq_along(List1), function(i) List1[[i]] + List2[[i]]) 

另一种选择是使用 MAP 对两个列表的矩阵求和。

Map(`+`, List1, List2)

使用map2

library(purrr)
map2(List1, List2, `+`)