R: Matrizen basierend auf Zeilen- und Spaltennamen hinzufügen

Ich habe zwei Matrizen, die ich basierend auf ihren Zeilen- und Spaltennamen summieren möchte. Die Matrizen müssen nicht unbedingt alle Zeilen und Spalten gemeinsam haben - einige fehlen möglicherweise in beiden Matrizen.

Betrachten Sie zum Beispiel zwei Matrizen A und 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

Spalte e fehlt in Matrix A und Spalte b fehlt in Matrix B. Zeile z fehlt in Matrix A und Zeile x fehlt in Matrix B.

Die summierte Tabelle, die ich suche, ist:

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

Die Zeilen- und Spaltenreihenfolge in der endgültigen Matrix spielt keine Rolle, solange die Matrix vollständig ist, d. H. Alle Daten enthält. Fehlende Werte müssen nicht "Na" sein, sondern können auch "0" sein.

Ich bin mir nicht sicher, ob es einen Weg gibt, der keine for-Schleifen beinhaltet. Jede Hilfe wäre sehr dankbar.

Meine Lösun

Ich habe das auf einfache Weise geschafft, indem ich die Matrizen in Datenrahmen konvertiert, die Datenrahmen zeilenweise gebunden und den resultierenden Datenrahmen dann zurück in eine Matrix umgewandelt habe. Das sieht so aus, als würde es funktionieren, aber vielleicht könnte jemand das überprüfen oder mich wissen lassen, ob es einen besseren Weg gibt.

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 sieht so aus:

   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...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage