我非常困惑,爲什麼按行索引訪問data.table比data.frame慢。任何建議如何我可以訪問每一行data.table順序循環,這是更快?爲什麼data.table行索引上的for循環比data.frame上的慢?
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'做了更多*事情。 – Arun
如何更快地迭代行索引的data.frame行? – user3147662
我已在此處創建了[FR#5260](https://r-forge.r-project.org/tracker/index.php?func=detail&aid=5260&group_id=240&atid=978)。感謝您的報告。應該有可能獲得更多的速度。 – Arun