Der folgende Code kombiniert einen Vektor mit einem Datenrahmen:
newrow = c(1:4)
existingDF = rbind(existingDF,newrow)
Dieser Code fügt jedoch immer die neue Zeile am Ende des Datenrahmens ein.
Wie kann ich die Zeile an einer bestimmten Stelle im Datenrahmen einfügen? Angenommen, der Datenrahmen hat 20 Zeilen. Wie kann ich die neue Zeile zwischen den Zeilen 10 und 11 einfügen?
existingDF = rbind(existingDF[1:10,],newrow,existingDF[-(1:10),])
newdataframe[nrow(newdataframe)+1,] <- existingdataframe[i,]
Antworten:
Hier ist eine Lösung, die den (oft langsamen)
rbind
Aufruf vermeidet :Wenn Geschwindigkeit weniger wichtig als Klarheit ist, funktioniert die Lösung von @ Simon gut:
(Beachten Sie, dass wir
r
anders indizieren ).Und schließlich Benchmarks:
Benchmarks
Wie @MatthewDowle mich immer darauf hinweist, müssen Benchmarks für die Skalierung untersucht werden, wenn das Problem größer wird. Los geht's dann:
Die Lösung von @ Roland lässt sich auch mit dem Aufruf an
rbind
:Auf einer linearen Skala dargestellt:
Und eine Log-Log-Skala:
quelle
df
mit Spaltena,b,c,d
und ich möchte die Zeile hinzufügen1,2,3,4
. Wie mache ich das?quelle
rbind
Ich kann immer noch nicht herausfinden, warum es so viel schneller ist als der gleichzeitige Anruf , aber ich bin fasziniert.Sie sollten versuchen, dplyr Paket
Ausgabe
Im Gegensatz zur Verwendung der Rbind-Funktion
Ausgabe
Es gibt einen gewissen Leistungsgewinn.
quelle
Zum Beispiel möchten Sie Zeilen von Variable 2 zu Variable 1 von Daten mit dem Namen "Kanten" hinzufügen. Machen Sie es einfach so
quelle