O código a seguir combina um vetor com um quadro de dados:
newrow = c(1:4)
existingDF = rbind(existingDF,newrow)
No entanto, esse código sempre insere a nova linha no final do quadro de dados.
Como posso inserir a linha em um ponto especificado no quadro de dados? Por exemplo, digamos que o dataframe tenha 20 linhas, como posso inserir a nova linha entre as linhas 10 e 11?
existingDF = rbind(existingDF[1:10,],newrow,existingDF[-(1:10),])
newdataframe[nrow(newdataframe)+1,] <- existingdataframe[i,]
Respostas:
Aqui está uma solução que evita a
rbind
chamada (geralmente lenta) :Se a velocidade é menos importante que a clareza, a solução do @ Simon funciona bem:
(Observe que indexamos de maneira
r
diferente).E, finalmente, benchmarks:
Benchmarks
Como o @MatthewDowle sempre me aponta, os benchmarks precisam ser examinados quanto à escala à medida que o tamanho do problema aumenta. Aqui vamos nós então:
A solução da @ Roland escala muito bem, mesmo com a chamada para
rbind
:Traçados em escala linear:
E uma escala de log-log:
fonte
df
com colunasa,b,c,d
e quero adicionar a linha1,2,3,4
. Como faço isso?fonte
rbind
, mas estou intrigado.Você deve tentar o pacote dplyr
Resultado
Em contraste com o uso da função rbind
Resultado
Há algum ganho de desempenho.
fonte
por exemplo, você deseja adicionar linhas da variável 2 à variável 1 de um dado chamado "bordas", faça isso da seguinte maneira
fonte