Я пытаюсь манипулировать списком списков R, которые сами содержат матрицы. То, что я хочу сделать, похоже на этот вопрос где список матриц l объединяется в одну матрицу с помощью функции do.call(rbind, l)
или rbind.fill.matrix(l)
из plyr
. Однако я хочу объединить матрицы из разных элементов списка верхнего уровня, сохранив при этом группы на нижнем уровне, чтобы в итоге получить список матриц с отдельными элементами, соответствующими группам списков нижнего уровня.
В качестве примера рассмотрим топлист списка верхнего уровня, составленный из трех списков нижнего уровня:
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)
Можно ли это сделать вообще?