Я бы предложил, чтобы для каждой матрицы вы делали все строки одинаковыми, то есть добавляли новые строки и заполняли 0. После этого сортируйте матрицы по именам строк.
Таким образом, вы можете сложить матрицы проще, просто Matrix1 + Matrix2 + Matrix3
.
Как подсказывает ваш отредактированный ответ, я создал новую матрицу со всеми 0
.
Matrix0
Aa A Baa Ba B Caa
Aa-Aa 0 0 0 0 0 0
Aa-A 0 0 0 0 0 0
Aa-Baa 0 0 0 0 0 0
Aa-Ba 0 0 0 0 0 0
Aa-B 0 0 0 0 0 0
Aa-Caa 0 0 0 0 0 0
A-Aa 0 0 0 0 0 0
A-A 0 0 0 0 0 0
A-Baa 0 0 0 0 0 0
A-Ba 0 0 0 0 0 0
A-B 0 0 0 0 0 0
A-Caa 0 0 0 0 0 0
Baa-Aa 0 0 0 0 0 0
Baa-A 0 0 0 0 0 0
Baa-Baa 0 0 0 0 0 0
Baa-Ba 0 0 0 0 0 0
Baa-B 0 0 0 0 0 0
Baa-Caa 0 0 0 0 0 0
Ba-Aa 0 0 0 0 0 0
Ba-A 0 0 0 0 0 0
Ba-Baa 0 0 0 0 0 0
Ba-Ba 0 0 0 0 0 0
Ba-B 0 0 0 0 0 0
Ba-Caa 0 0 0 0 0 0
B-Aa 0 0 0 0 0 0
B-A 0 0 0 0 0 0
B-Baa 0 0 0 0 0 0
B-Ba 0 0 0 0 0 0
B-B 0 0 0 0 0 0
B-Caa 0 0 0 0 0 0
Caa-Aa 0 0 0 0 0 0
Caa-A 0 0 0 0 0 0
Caa-Baa 0 0 0 0 0 0
Caa-Ba 0 0 0 0 0 0
Caa-B 0 0 0 0 0 0
Caa-Caa 0 0 0 0 0 0
Для матрицы с неполным количеством строк, у меня это как
Matrix1
Aa A Baa Ba B Caa
A-A 0 0 0 2 0 0
A-B 0 0 0 0 1 0
A-Ba 0 0 0 0 2 0
A-Baa 0 0 1 0 0 0
B-A 0 1 0 0 0 0
B-B 0 0 0 2 13 8
B-Ba 0 0 1 4 6 3
B-Baa 0 0 2 0 1 1
B-Caa 0 0 0 0 5 7
Ba-A 1 0 1 0 0 0
Ba-B 0 0 1 4 6 4
Ba-Ba 0 0 3 4 0 1
Ba-Baa 0 0 0 2 0 0
Ba-Caa 0 0 0 0 0 3
Baa-Aa 0 0 0 1 0 0
Baa-B 0 0 0 4 2 1
Baa-Ba 1 1 0 0 2 1
Baa-Baa 0 0 6 2 0 0
Baa-Caa 0 0 0 1 1 0
Caa-B 0 1 0 2 3 4
Caa-Ba 0 0 0 1 2 1
Caa-Caa 0 0 0 1 10 17
Отсюда я могу связать строки Matrix1 со строками из Matrix0, которые еще не существуют в Matrix1.
Matrix1 <- rbind(Matrix1, Matrix0[!row.names(Matrix0) %in% row.names(Matrix1), ])
Затем, чтобы убедиться, что добавление имеет смысл, я отсортировал порядок строк,
Matrix1 <- Matrix1[row.names(Matrix0), ]
Повторите эти две строки кодов для всех ваших 17 матриц, затем вы сможете их сложить.