R: добавить матрицы на основе имен строк и столбцов

У меня есть две матрицы, которые я хочу суммировать на основе их имен строк и столбцов. Матрицы не обязательно будут иметь все общие строки и столбцы - некоторые могут отсутствовать в любой матрице.

Например, рассмотрим две матрицы A и B:

A=                 B=
  a b c d            a c d e
v 1 1 1 0          v 0 0 0 1
w 1 1 0 1          w 0 0 1 0
x 1 0 1 1          y 0 1 0 0
y 0 1 1 1          z 1 0 0 0

Столбец e отсутствует в матрице A, а столбец b отсутствует в матрице B. Строка z отсутствует в матрице A, а строка x отсутствует в матрице B.

Сводная таблица, которую я ищу:

Sum=
  a b  c d e
v 1 1  1 0 1
w 1 1  0 2 0
x 1 0  1 1 na
y 0 1  2 1 0
z 1 na 0 0 0

Порядок строк и столбцов в окончательной матрице не имеет значения, пока матрица заполнена, то есть имеет все данные. Пропущенные значения не обязательно должны быть «Na», но вместо этого могут быть «0».

Я не уверен, есть ли способ сделать это, который не включает циклы. Любая помощь приветствуется.

Мое решение

Мне удалось сделать это легко, преобразовав матрицы в кадры данных, связав кадры данных по строкам, а затем преобразовав получившийся кадр данных обратно в матрицу. Похоже, что это работает, но, возможно, кто-то может проверить еще раз или дать мне знать, если есть лучший способ.

library(reshape2)
A_df=as.data.frame(as.table(A))
B_df=as.data.frame(as.table(B))

merged_df=rbind(A_df,B_df)

Summed_matrix=acast(merged_df, Var1 ~ Var2, sum)

merged_df выглядит так:

   Var1 Var2 Freq
1     v    a    1
2     w    a    1
3     x    a    1
4     y    a    0
5     v    b    1
6     w    b    1
etc...

Ответы на вопрос(1)

Ваш ответ на вопрос