【发布时间】:2014-03-13 05:10:59
【问题描述】:
我正在尝试确定 data.table 中重复的行。这是我使用的示例代码。
a<-c(1,2,3,3,5)
b<-c(6,7,8,9,10)
require(data.table)
DT<-data.table(a,b)
setkey(DT,a)
DT
# a b
# 1: 1 6
# 2: 2 7
# 3: 3 8
# 4: 3 9
# 5: 5 10
setkey(DT,a)
duplicated(DT)
# [1] FALSE FALSE FALSE TRUE FALSE
如您所见,我将第 4 行标识为重复行,这是不正确的,因为 DT[3:4,"b",with=FALSE] 不同。我是不是用duplicated函数错了?
【问题讨论】:
-
也可以看看
?duplicated.data.table。 -
@Arun 我检查了它,但对参数
by的定义感到困惑,其中指出:“NULL 或 FALSE 值使用所有列,并且类似于类似的 data.frame 方法。”跨度> -
是的,您对此有何困惑?特别是当前面的行声明“默认为
key(x),默认情况下仅使用 key 列”。 -
啊哈,没错!刚刚也查了。会解决的。一定是 1.8.10 的回归。谢谢。
-
提交bug #5424 并修复。
by=TRUE/FALSE两者都会导致错误。使用by=NULL。?duplicated.data.table也已更新。在 1.9.4 中会很好。
标签: r data.table