是否有更快的方法来获取随机子样本(没有替换),而不是base::sample
函数?
答案 0 :(得分:14)
你可以通过消除base :: sample函数调用来获得一点点加速:
> x<- rnorm(10000)
> system.time(for(i in 1:100000) x[.Internal(sample(10000L, 10L, FALSE, NULL))])
user system elapsed
2.873 0.017 2.851
> system.time(for(i in 1:100000) sample(x,10))
user system elapsed
3.420 0.025 3.258
根据您的问题,可能还有其他更聪明的方法来加速您的代码。想想用一个大的替换许多小样本的小调用的方法。
答案 1 :(得分:3)
没有
我的笔记本电脑可以在3毫秒内获得10,000个样品并进行更换。没有替换我可以在5ms内获得它们。从500个分布中多次绘制需要66 ms。你有多快需要它?
答案 2 :(得分:0)
如果没有使用CUDA / gputools,你就不会找到更快的方法。