如何在R中的列表列表中合并矩阵?

Qin*_*Liu 1 r list matrix

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

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
Run Code Online (Sandbox Code Playgroud)

我希望按行合并所有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
Run Code Online (Sandbox Code Playgroud)

谢谢!

G. *_*eck 5

使用mapply具有rbind这样的:

do.call(mapply, c("rbind", mylist))
Run Code Online (Sandbox Code Playgroud)

给予:

$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
Run Code Online (Sandbox Code Playgroud)