我相对较新,data.table
并希望使用快速子设置功能来执行一些引导程序。
在我的示例中,我有两列 100 万个随机法线,我想对其中一些行进行抽样并计算两列之间的相关性。我希望 data.table 网页上建议的速度提高 100 倍……但也许我错过了使用data.table
……如果是这样,应该如何构造函数才能获得这个速度改进。
请参阅下面的示例:
n <- 1e6
set.seed(1)
q <- data.frame(a=rnorm(n),b=rnorm(n))
q.dt <- data.table(q)
df.samp <- function(){cor(q[sample(seq(n),n*0.01),])[2,1]}
dt.samp <- function(){q.dt[sample(seq(n),n*0.01),cor(a,b)]}
require(microbenchmark)
microbenchmark(median(sapply(seq(100),function(y){df.samp()})),
median(sapply(seq(100),function(y){dt.samp()})),
times=100)
Unit: milliseconds
expr min lq median uq max neval
median(sapply(seq(100), function(y) { df.samp() })) 1547.5399 1673.1460 1747.0779 1860.3371 2028.6883 100
median(sapply(seq(100), function(y) { dt.samp() })) 583.4724 647.0869 717.7666 764.4481 989.0562 100