将大数据帧逐行拆分为子帧的最快方法

时间:2016-10-08 20:17:53

标签: r performance dataframe split data.table

我有一个大data.table,看起来像这样:

library(data.table)
set.seed(1)
n <- 1e5
p <- 100
dt <- data.table(matrix(rnorm(n*p),n,p))

我想将其拆分为一行N一行的列表(这需要考虑N不划分n时的情况)。这是我目前的实施:

split_dt <- function(dt, N)
  split(dt, f= c(rep(seq(N), each = n %/% N), rep(N, n %% N)) )

以下是microbenchmark测试的结果:

library(microbenchmark)
microbenchmark( split_dt(dt, N = 10) )

Unit: milliseconds
        expr     min       lq     mean   median       uq      max neval
split_dt(dt, N) 150.114 154.2513 159.7832 157.1903 162.7404 187.2896   100

关于此的几个问题:

  1. 实施此操作的方法是否快得多?

  2. 我的实施是否利用data.table的内部优化方法?

  3. 感谢。

0 个答案:

没有答案