Poniższy kod łączy wektor z ramką danych:
newrow = c(1:4)
existingDF = rbind(existingDF,newrow)
Jednak ten kod zawsze wstawia nowy wiersz na końcu ramki danych.
Jak mogę wstawić wiersz w określonym miejscu w ramce danych? Na przykład, powiedzmy, że ramka danych ma 20 wierszy, jak mogę wstawić nowy wiersz między wierszami 10 i 11?
existingDF = rbind(existingDF[1:10,],newrow,existingDF[-(1:10),])
newdataframe[nrow(newdataframe)+1,] <- existingdataframe[i,]
Odpowiedzi:
Oto rozwiązanie, które pozwala uniknąć (często powolnego)
rbind
wywołania:Jeśli szybkość jest mniej ważna niż przejrzystość, rozwiązanie @ Simona działa dobrze:
(Zauważ, że indeksujemy
r
inaczej).I wreszcie testy porównawcze:
Benchmarki
Jak zawsze zwraca mi uwagę @MatthewDowle, testy porównawcze muszą być sprawdzane pod kątem skalowania wraz ze wzrostem rozmiaru problemu. A więc zaczynamy:
Rozwiązanie @ Roland skaluje się całkiem dobrze, nawet w przypadku wezwania do
rbind
:Wykreślone w skali liniowej:
I skala log-log:
źródło
df
z kolumnamia,b,c,d
i chcę dodać wiersz1,2,3,4
. W jaki sposób mogę to zrobić?źródło
rbind
, ale jestem zaintrygowany.Powinieneś wypróbować pakiet dplyr
Wynik
W przeciwieństwie do korzystania z funkcji rbind
Wynik
Występuje pewien wzrost wydajności.
źródło
na przykład chcesz dodać wiersze zmiennej 2 do zmiennej 1 danych o nazwie „krawędzie”, po prostu zrób to w ten sposób
źródło