我有以下数据表:
DT = data.table(
v1=as.character(rnorm(5)),
v2=as.character(rnorm(5)),
v3=as.character(rnorm(5)),
v4=as.character(rnorm(5)),
v5=as.character(rnorm(5))
)
我希望通过复制其列来使其大小加倍。
我这样做:
DT2 <- with(DT, data.table(
v1=rep(v1,2),
v2=rep(v2,2),
v3=rep(v3,2),
v4=rep(v4,2),
v5=rep(v5,2)
)
是否有更快的方法来迭代colnames?
答案 0 :(得分:2)
如果速度快,那么......
microbenchmark(
rbindlist(list(DT, DT)),
DT[rep(1:nrow(DT), 2), ],
rbind(DT, DT)
)
,并提供:
expr min lq median uq max neval
rbindlist(list(DT, DT)) 121.516 126.8520 130.9580 136.9105 353.052 100
DT[rep(1:nrow(DT), 2), ] 784.102 814.0705 848.7600 957.3445 5709.986 100
rbind(DT, DT) 864.976 906.2335 958.5755 1085.6325 1961.897 100