我正在尝试操作本身包含矩阵的列表的 R 列表。我想要做的类似于这个问题do.call(rbind, l)
,其中矩阵列表 l 使用 from或rbind.fill.matrix(l)
函数组合成单个矩阵plyr
。但是,我想组合来自顶级列表不同元素的矩阵,同时保留较低级别的分组,最终得到一个矩阵列表,其中单独的元素对应于较低级别列表的分组。
例如,考虑由三个较低级别列表构成的顶级列表 toplist:
lowerlist1 = list(matrix1_1, matrix1_2, matrix1_3, matrix1_4)
lowerlist2 = list(matrix2_1, matrix2_2, matrix2_3, matrix2_4)
lowerlist3 = list(matrix3_1, matrix3_2, matrix3_3, matrix3_4)
toplist = list(lowerlist1, lowerlist2, lowerlist3)
其中矩阵都具有相同的列数,但可能具有不同的行数。最后,我想要一个具有以下结构的新列表 newtoplist
newmatrix1 = rbind(matrix1_1, matrix2_1, matrix3_1)
newmatrix2 = rbind(matrix1_2, matrix2_2, matrix3_2)
newmatrix3 = rbind(matrix1_3, matrix2_3, matrix3_3)
newmatrix4 = rbind(matrix1_4, matrix2_4, matrix3_4)
newtoplist = list(newmatrix1, newmatrix2, newmatrix3, newmatrix4)
所以一个完整的例子是:
matrix1_1 = matrix(1.1, 4, 5)
matrix1_2 = matrix(1.2, 3, 5)
matrix1_3 = matrix(1.3, 2, 5)
matrix1_4 = matrix(1.4, 3, 5)
matrix2_1 = matrix(2.1, 2, 5)
matrix2_2 = matrix(2.2, 4, 5)
matrix2_3 = matrix(2.3, 5, 5)
matrix2_4 = matrix(2.4, 2, 5)
matrix3_1 = matrix(3.1, 2, 5)
matrix3_2 = matrix(3.2, 4, 5)
matrix3_3 = matrix(3.3, 5, 5)
matrix3_4 = matrix(3.4, 2, 5)
lowerlist1 = list(matrix1_1, matrix1_2, matrix1_3, matrix1_4)
lowerlist2 = list(matrix2_1, matrix2_2, matrix2_3, matrix2_4)
lowerlist3 = list(matrix3_1, matrix3_2, matrix3_3, matrix3_4)
toplist = list(lowerlist1, lowerlist2, lowerlist3)
newmatrix1 = rbind(matrix1_1, matrix2_1, matrix3_1)
newmatrix2 = rbind(matrix1_2, matrix2_2, matrix3_2)
newmatrix3 = rbind(matrix1_3, matrix2_3, matrix3_3)
newmatrix4 = rbind(matrix1_4, matrix2_4, matrix3_4)
newtoplist = list(newmatrix1, newmatrix2, newmatrix3, newmatrix4)
一般可以这样做吗?