我只花了一些时间研究R中的data.table
,并且想知道我可以期望获得最大性能提升的条件。也许简单的答案是当我有一个大型data.frame并经常在这个data.frame的子集上运行。当我只是加载数据文件并估计模型时,我不能期望太多,但许多[
操作会产生差异。这是真的吗,唯一的答案还是我应该考虑什么?什么时候开始重要? 10x5,1,000x5,1,000,000x5?
编辑:有些评论表明data.table
通常更快,同样重要,几乎从不慢。因此,了解何时不使用data.table
也是一件好事。
答案 0 :(得分:10)
至少有少数情况data.table
闪耀:
data.table
是引用的,因此massively faster。以下是一些基准测试: Benchmarking data.frame (base), data.frame(package dataframe) and data.table
答案 1 :(得分:7)
data.table
快速发布的一个实例是split-apply-combine类型的工作,它使plyr
成名。假设您有一个data.frame
,其中包含以下数据:
precipitation time station_id
23.3 1 A01
24.1 2 A01
26.1 1 A02
etc etc
当您需要平均每个电台ID时,您可以使用许多R功能,例如: ave
,ddply
或data.table
。如果station_id
中的唯一元素数量增加,则data.table
可以很好地扩展,例如ddply
变得非常慢。更多详细信息,包括示例,可以在this post on my blog中找到。该测试表明速度增加超过150倍是可能的。这种差异可能会大得多......