示例:
test <- data.table(id=c(rep(1,3), 2:4), col1=1:6)
ids <- c(1,10,1)
test[id %in% ids]
输出:
id col1
1: 1 1
2: 1 2
3: 1 3
4: 1 1
5: 1 2
6: 1 3
我希望输出结果为:
id col1
1: 1 1
2: 1 2
3: 1 3
我看到修复方法是使用test[id %in% unique(ids)]
。我的问题是:为什么子集以这种方式起作用?原因似乎是ids
向量中的重复值,但我想知道为什么data.table
以这种方式对此特定情况起作用。
谢谢!
编辑:
在data.table版本1.9.4(当前CRAN版本)中,test[(id %in% ids)]
生成预期输出,或通过设置options(datatable.auto.index=FALSE)
。在data.table版本1.9.5中,test[id %in% ids]
产生预期的输出。
这是data.table版本1.9.4中的错误,错误修复#6,github.com / Rdatatable / data.table。感谢@nongkrong和@Frank的评论。