Ich frage mich, ob es eine einfache Möglichkeit gibt, die Funktionen rapply(, how = "replace")
und mapply()
zu kombinieren, um mapply()
auf verschachtelten Listen rekursiv zu verwenden.Wie kombiniere ich rapply() und mapply() oder wie benutze ich mapply/Map rekursiv?
Zum Beispiel, ich habe zwei verschachtelte Listen:
A = list(list(c(1,2,3), c(2,3,4)), list(c(4,3,2), c(3,2,1)))
B = list(list(c(1,2,3), c(2,3,4)), list(c(4,3,2), c(3,2,1)))
Sagen wir, ich function(x, y) x + y
an alle entsprechenden Elemente in A und B und die Erhaltung der verschachtelten Struktur anwenden möchten. Das gewünschte Ergebnis würde
result = list(list(c(2,4,6), c(4,6,8)), list(c(8,6,4), c(6,4,2)))
sein Ich denke, das ein mapply()
Analogon von rapply(x, f, how = "replace")
sein sollte, aber konnte nicht herausfinden, wie sie zu integrieren. Könnte mir jemand bitte ein paar Hinweise geben?
Eine andere schnelle Frage ist, die in der Regel schneller für intensive Berechnung, verschachtelte Listen oder mehrdimensionale Arrays ist? Alle Kommentare werden sehr geschätzt!
Vielen Dank Psidom! Ich habe festgestellt, dass dies so ordentlich und allgemeiner ist als die obige Lösung !! – shenglih
Um den Overhead von 'tryCatch' zu vermeiden, könnte eine Alternative' s' lauten: 'function (x, y) if (isatomic (x) && isatomic (y)) x + y else Karte (s, x, y) ' –