假设我有一个由九个2 x 2矩阵组成的列表,如下所定义:
我可以使用以下代码完成此任务:
mat_list <- list(matrix(1, 2, 2), matrix(2, 2, 2), matrix(3, 2, 2),
matrix(4, 2, 2), matrix(5, 2, 2), matrix(6, 2, 2),
matrix(7, 2, 2), matrix(8, 2, 2), matrix(9, 2, 2))
我希望将这些矩阵合并成一个6 x 6的矩阵,它应该长这样:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 4 4 7 7
[2,] 1 1 4 4 7 7
[3,] 2 2 5 5 8 8
[4,] 2 2 5 5 8 8
[5,] 3 3 6 6 9 9
[6,] 3 3 6 6 9 9
我可以使用以下代码完成此任务:
do.call( cbind, list( do.call( rbind, mat_list[1:3]),
do.call( rbind, mat_list[4:6]),
do.call( rbind, mat_list[7:9])) )
但是如何将这个方法推广到一个非常大的矩阵列表中呢?写出do.call
函数列表将会太过繁琐。
seq
do.call(rbind, lapply(seq(ceiling(length(mat_list) / 3)), function(i) do.call(cbind, mat_list[seq(i, length(mat_list), by = 3)])))
。 - akrun