我有一个大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
关于此的几个问题:
实施此操作的方法是否快得多?
我的实施是否利用data.table
的内部优化方法?
感谢。