本文介绍了为什么 expand.grid 比 data.table 的 CJ 快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
> system.time(expand.grid(1:1000,1:10000))
user system elapsed
1.65 0.34 2.03
> system.time(CJ(1:1000,1:10000))
user system elapsed
3.48 0.32 3.79
推荐答案
感谢您报告此问题.这已在 data.table 1.8.9 中修复.这是最新提交 (913) 的计时测试:
Thanks for reporting this. This has been fixed now in data.table 1.8.9. Here's the timing test with the latest commit (913):
system.time(expand.grid(1:1000,1:10000))
# user system elapsed
# 1.420 0.552 1.987
system.time(CJ(1:1000,1:10000))
# user system elapsed
# 0.080 0.092 0.171
来自 新闻一个>:
CJ() 在 1e6 行(例如)上快 90%,#4849.现在,输入在合并之前先排序,而不是在合并之后排序,并使用 rep.int 而不是 rep(感谢 Sean Garborg 的想法、代码和基准测试),并且仅在 is.unsorted() 时才排序,#2321.
还可以查看新闻以了解其他值得注意的功能和错误修复;例如,CJ()
也获得了一个新的 sorted
参数.
Also check out NEWS for other notable features that have made it in and bug fixes; e.g., CJ()
gains a new sorted
argument too.
这篇关于为什么 expand.grid 比 data.table 的 CJ 快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!