use*_*111 23 r data.table
是否有一种特定的方法来组合R中的data.tables列表?
我有一个~20个data.tables的列表,每个都有大约100万行,并希望将它们组合成一个包含2000万行的data.table.
我一直在这样做
Reduce('rbind', data.table)
Run Code Online (Sandbox Code Playgroud)
但它需要一段时间.
TNX!
Cha*_*ase 22
使用do.call
这个组合示例,使用速度似乎快了大约10倍:
library(data.table)
x1 <- data.table(x = runif(1e6), y = runif(1e6))
x2 <- data.table(x = runif(1e6), y = runif(1e6))
#20 data.tables all of length 1e6
yourList <- list(x1,x2,x1,x2,x1,x2,x1,x2,x1,x2,x1,x2,x1,x2,x1,x2,x1,x2,x1,x2)
system.time(out1 <- Reduce("rbind", yourList))
#-----
user system elapsed
3.37 3.03 6.43
system.time(out2 <- do.call("rbind", yourList))
#-----
user system elapsed
0.33 0.36 0.68
all.equal(out1,out2)
#-----
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
我没有意识到data.table
这个任务有特定的功能.对于球场而言,它非常快.以下是相关时间:
system.time(out3 <- rbindlist(yourList))
#-----
user system elapsed
0.07 0.03 0.11
all.equal(out1,out3)
#-----
[1] TRUE
Run Code Online (Sandbox Code Playgroud)