将函数应用于多列data.table

时间:2014-10-12 15:03:26

标签: r parallel-processing cluster-computing data.table

将函数应用于多列data.table时,是否有任何方法比lapply更有效?看起来每个列的lapply运行不是平行的。希望有更好的方法,而不是使用群集包。

dt<-data.table(type=c(rep('H',500000),rep('L',500000)),a=rnorm(1000000),b=rnorm(1000000),c=rnorm(1000000))
setkey(dt,type)
system.time(dt<-dt[, lapply(.SD, function(.){rank(.)}), by = key(dt),.SDcols=2:4])
#user  system elapsed 
#1.41    0.05    1.45 

system.time(dt<-dt[, rank(a), by = key(dt)]) 
#user  system elapsed 
#0.41    0.00    0.41

运行3列的总时间几乎几乎等于1列的3倍。

0 个答案:

没有答案