【问题标题】:Convert unlisted matrices within a list back to matrices将列表中未列出的矩阵转换回矩阵
【发布时间】:2021-11-25 12:56:30
【问题描述】:

我有两个矩阵列表,每个列表由十个 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(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

【问题讨论】:

    标签: r lapply


    【解决方案1】:

    使用map2

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

    【讨论】:

      【解决方案2】:

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

      Map(`+`, List1, List2)
      

      【讨论】:

      • 我也试过这个选项,它有效!
      【解决方案3】:

      使用双括号,这样您实际上是在添加矩阵(而不是一个包含 1 个矩阵的列表,然后您将其转换为带有 unlist 的向量):

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

      【讨论】:

        猜你喜欢
        • 2010-12-03
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        • 1970-01-01
        • 2014-05-15
        相关资源
        最近更新 更多