cbind vs rbind avec data.table
J'ai remarqué que cbind prend beaucoup plus de temps que rbind pour les données.des tables. Quelle est la raison?
> dt <- as.data.table(mtcars)
> new.dt <- copy(dt)
> timeit({for (i in 1:100) dt.new <- rbind(dt.new, dt)})
user system elapsed
0.237 0.012 0.253
> new.dt <- copy(dt)
> timeit({for (i in 1:100) dt.new <- cbind(dt.new, dt)})
user system elapsed
14.795 0.090 14.912
Où
timeit <- function(expr)
{
ptm <- proc.time()
expr
proc.time() - ptm
}
source d'informationauteur andrew
Vous devez vous connecter pour publier un commentaire.
En fin de compte je pense que cela revient à
alloc.col
être lent à cause de la boucle où il supprime les divers attributs de colonnes. Je ne suis pas entièrement sûr de savoir pourquoi c'est fait, peut-être Arun ou Matt ne peut expliquer.Comme vous pouvez le voir ci-dessous, les opérations de base pour
cbind
sont beaucoup plus rapides querbind
: