我知道当我逐行构建data.table
时,最好预先分配空间:
library(data.table)
dt <- data.table(x=rep(0,1000), y=rep(0,1000))
for(i in 1L:1000L) {
set(dt, i, 1L, runif(1))
set(dt, i, 2L, rnorm(1))
}
(事实上,如果我没有预先分配,我会得到该代码的分段错误。)
如果我事先不知道行数,那么我需要动态增长,可能使用指数分配或其他东西。我是否需要自己管理该流程,或者data.table
是否存在动态增长支持?
另外,当我完成追加行时,我可能会留下一些已分配的空间,是否有truncate()
方法或类似方法?或者我应该dt <- dt[1:n,]
?