我正在尝试将列表中具有相同名称的矩阵组合在一起。为简单起见,我以包含两个列表的列表为例。
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)
谢谢!
使用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)