R是数据表大小的两倍

时间:2014-06-18 14:43:39

标签: r data.table

我有以下数据表:

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?

1 个答案:

答案 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