在R数据表上使用%in%时重复行

时间:2015-07-23 20:53:22

标签: r data.table

示例:

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的评论。

0 个答案:

没有答案