【发布时间】:2014-01-28 18:28:27
【问题描述】:
对于为什么按行索引访问 data.table 比 data.frame 慢,我绝对感到困惑。有什么建议我可以更快地循环访问 data.table 的每一行?
m = matrix(1L, nrow=100000, ncol=100)
DF = as.data.frame(m)
DT = as.data.table(m)
identical(DF[100, ], DT[100, ])
[1] FALSE
> all(DF[100, ], DT[100, ])
[1] TRUE
> system.time(for (i in 1:1000) DT[i,])
user system elapsed
5.440 0.000 5.451
R> system.time(for (i in 1:1000) DF[i,])
user system elapsed
2.757 0.000 2.784
【问题讨论】:
-
最简单的解释是
[.data.table比[.data.frame做了更多的事情。 -
如何才能更快地逐行索引迭代 data.frame 的行?
-
我在这里创建了一个FR #5260。感谢您的报告。应该可以提高速度。
-
@user3147662,您为什么不通过遍历
data.table的行来提供有关您尝试解决的问题的更多信息?你可以在没有显式迭代的情况下做出惊人的强大的事情。此外,您可能应该将其作为一个单独的问题。 -
一个很好的起点是用你的实际任务来编辑你的帖子,清楚地,用可生产的例子,并显示你的输出。
标签: r indexing dataframe data.table