我从一个带有两列的data.table开始,并希望连续应用标准来过滤掉观察结果。有些标准在计算上很麻烦,所以我想最后应用这些标准(当数据集已经减少时)。
我认为这是data.table应该处理得比数据框架好得多的东西。但是我使用data.table的解决方案并不比使用data.frame更有效。 有没有办法让它更快?
实施例:
library(data.table)
#fake data
df<-data.frame(id=1:1000000,content=round(runif(1000000)*3))
dt<-as.data.table(df,key=id)
for (i in 1:1000000) {
#datatable version (memory intensive and slow)
preselection_dt = dt[id>i]
some1<-preselection_dt[3==content , which=TRUE]
#dataframe version, saves only indices and is fast
preselection_df = df$id>i
some2<-which(3==df$content[preselection_df])
}
(假设3==content
是计算密集型的东西,所以我只会通过计算这个来获得很多东西,但这只是第一个条件为真的观察结果。
我无法找到有效使用data.table-keys并产生正确结果的解决方案。