Wie vergleiche ich zwei Datenrahmen / Tabellen und extrahiere Daten in R?

Beim Versuch, Fehlanpassungen zwischen den beiden folgenden Datenrahmen zu extrahieren, ist es mir bereits gelungen, einen neuen Datenrahmen zu erstellen, in dem Fehlanpassungen ersetzt werden.
Was ich jetzt brauche, ist eine Liste von Fehlpaarungen:

dfA <- structure(list(animal1 = c("AA", "TT", "AG", "CA"), animal2 = c("AA", "TB", "AG", "CA"), animal3 = c("AA", "TT", "AG", "CA")), .Names = c("animal1", "animal2", "animal3"), row.names = c("snp1", "snp2", "snp3", "snp4"), class = "data.frame")
# > dfA
#      animal1 animal2 animal3
# snp1      AA      AA      AA
# snp2      TT      TB      TT
# snp3      AG      AG      AG
# snp4      CA      CA      CA
dfB <- structure(list(animal1 = c("AA", "TT", "AG", "CA"), animal2 = c("AA", "TB", "AG", "DF"), animal3 = c("AA", "TB", "AG", "DF")), .Names = c("animal1", "animal2", "animal3"), row.names = c("snp1", "snp2", "snp3", "snp4"), class = "data.frame")
#> dfB
#     animal1 animal2 animal3
#snp1      AA      AA      AA
#snp2      TT      TB      TB
#snp3      AG      AG      AG
#snp4      CA      DF      DF

Um die Nichtübereinstimmungen zu klären, sind sie hier als 00 markiert:

#      animal1 animal2 animal3
# snp1      AA      AA      AA
# snp2      TT      TB      00
# snp3      AG      AG      AG
# snp4      CA      00      00

Ich brauche die folgende Ausgabe:

structure(list(snpname = structure(c(1L, 2L, 2L), .Label = c("snp2", "snp4"), class = "factor"), animalname = structure(c(2L, 1L, 2L), .Label = c("animal2", "animal3"), class = "factor"), alleledfA = structure(c(2L, 1L, 1L), .Label = c("CA", "TT"), class = "factor"), alleledfB = structure(c(2L, 1L, 1L), .Label = c("DF", "TB"), class = "factor")), .Names = c("snpname", "animalname", "alleledfA", "alleledfB"), class = "data.frame", row.names = c(NA, -3L))
#  snpname animalname alleledfA alleledfB
#1    snp2    animal3        TT        TB
#2    snp4    animal2        CA        DF
#3    snp4    animal3        CA        DF

isher habe ich versucht, zusätzliche Daten aus meinem @ zu extrahierelapply -Funktion, mit der ich die Fehlpaarungen durch Null ersetze, ohne Erfolg. Ich habe auch erfolglos versucht, eine ifelse-Funktion zu schreiben. Hoffe ihr könnt mir hier raushelfen!

Eventuell wird dies für Datensätze mit einer Dimension von 100K x 1000 ausgeführt, sodass die Effizienz von Vorteil ist

Antworten auf die Frage(6)

Ihre Antwort auf die Frage