将函数应用于多列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倍。