Ich habe numerische data.frame Objekt in der Liste und möchte sie parallel hinzufügen. Ich beobachte jedoch, dass das Hinzufügen eines gepaarten data.frame-Objekts im Gitter wiederholt wurde und ich nur über das obere/untere Gitterdreieck iterieren und über diese parallel summieren kann. Ich habe eine einfache R-Funktion geschrieben, um das zu tun, aber mein Ausgabebit ist weniger effizient, weil die wiederholte Summe passiert. Ich wette, es muss einen intuitiveren/effizienteren Weg geben, diesen Job zu machen. Hat jemand eine bessere Lösung, um dies einfacher/effizienter zu machen, wenn data.frame-Objekte im Raster sind? Irgendein Vorschlag, um meine Funktion für diese Aufgabe besser zu formulieren? DankWie effizient iterieren für die Summe über data.frame Objekte im Grid?
simulierte Daten
fo <- data.frame(start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
ba <- data.frame(start=seq(5, by=2, len=7), stop=seq(7, by=2, len=7))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
mylist <- list(fo, ba, bleh)
meiner eigene Funktion
add_pairDF <- function(set, idx=1L) {
quer <- set[[idx]]
.quer <- mapply('+', quer, quer)
supp <- lapply(set[-idx], function(ele_) {
ans <- mapply('+', quer, ele_)
})
res <- c(list(.quer), supp)
return(res)
}
Anfangsausgang (Wiederholung vorhanden ist):
ans_1 <- add_pairDF(set=mylist, idx=1L)
ans_2 <- add_pairDF(set=mylist, idx=2L)
ans_3 <- add_pairDF(set=mylist, idx=3L)
gewünschter Ausgang:
in meinem ersten Ausgang, Funk Die Summe ergibt sich aus dem gepaarten data.frame-Objekt, aber ich denke, ich muss meine Funktion nicht dreimal mit einem anderen Index für meine Liste aufrufen.
Ich möchte wiederholte Summe über gepaarten data.frame entfernen, ziele auf das untere/obere Dreieck (einschließlich Diagonale), wenn alle gepaarten data.frame-Objekte im Rasterquadrat platziert wurden. Wie kann ich diese Art von Wiederholung vermeiden? Was ist die effiziente Iteration für ein data.frame-Objekt im Grid? Kann jemand mögliche Ideen vorschlagen, um mein Problem zu lösen?
Wenn Sie Ihren Code so ausführen, wie er ist, werden Warnungen ausgegeben, da die Datenrahmen unterschiedliche Längen haben. Können Sie die tatsächlich erwartete numerische Ausgabe posten und den Zweck dieser Berechnung erläutern? –
können Sie die Warnung vorerst ignorieren. Wenn Sie meine benutzerdefinierte Funktion drei Mal ausführen, wie ich in der Post gezeigt habe, wird es im Rastermuster sein, dies zu tun, ist nicht erwünscht, weil die wiederholte Summe passiert. Ich suche eine effizientere Iteration, die nur auf dem oberen/unteren Gitterdreieck (einschließlich Diagonale) läuft. Irgendeine bessere Idee? – Jeff