【问题标题】:How to combine matrices in lists of a list in R?如何在R中的列表列表中组合矩阵?
【发布时间】:2019-10-06 16:30:47
【问题描述】:

我正在尝试将具有相同名称的矩阵组合到列表的列表中。为简单起见,我以一个包含两个列表的列表为例。

A = matrix(c(1,2,3,4),2)
B = matrix(c(1,2,3,4,5,6),2)
list1 = list(A=A,B=B) 

A = matrix(c(1,2,2,1,1,1),3)
B = matrix(c(1,2,3,3,2,2,1,1,1),3)
list2 = list(A=A,B=B) 

mylist=list(list1,list2)
mylist
[[1]]
[[1]]$A
     [,1] [,2]
[1,]    1    3
[2,]    2    4

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


[[2]]
[[2]]$A
     [,1] [,2]
[1,]    1    1
[2,]    2    1
[3,]    2    1

[[2]]$B
     [,1] [,2] [,3]
[1,]    1    3    1
[2,]    2    2    1
[3,]    3    2    1

我希望按行组合所有 A 矩阵并按行组合所有 B 矩阵。请注意,实际上我有一堆列表,例如 list1 和 list2,因此我更喜欢为此使用一些循环样式的操作。

我尝试简单地合并所有列表(即示例中的 list1 和 list2),但我仍然无法合并单独的列表。

> do.call(c, mylist)
$A
     [,1] [,2]
[1,]    1    3
[2,]    2    4

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

$A
     [,1] [,2]
[1,]    1    1
[2,]    2    1
[3,]    2    1

$B
     [,1] [,2] [,3]
[1,]    1    3    1
[2,]    2    2    1
[3,]    3    2    1

谢谢!

【问题讨论】:

    标签: r list matrix


    【解决方案1】:

    像这样使用mapplyrbind

    do.call(mapply, c("rbind", mylist))
    

    给予:

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

    【讨论】:

    • 美丽,勇敢
    【解决方案2】:

    这是tidyverse的选项

    library(purrr)
    library(dplyr)
    mylist %>% 
       transpose %>%
       map(reduce, rbind)
    #$A
    #     [,1] [,2]
    #[1,]    1    3
    #[2,]    2    4
    #[3,]    1    1
    #[4,]    2    1
    #[5,]    2    1
    
    #$B
    #     [,1] [,2] [,3]
    #[1,]    1    3    5
    #[2,]    2    4    6
    #[3,]    1    3    1
    #[4,]    2    2    1
    #[5,]    3    2    1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2012-11-25
      • 2015-07-12
      • 2020-11-30
      • 2012-05-03
      相关资源
      最近更新 更多