独特的data.table工作不正确

时间:2015-02-25 13:02:19

标签: r unique data.table

我在data.table中发现了一些有趣的行为,如果有人可以向我解释为什么会这样,我很好奇。我合并了两个data.tables(在这个MWE中,一个有1行,另外2行)。合并的data.table有两个唯一的行,但是当我在合并的data.table上调用unique()时,我得到一行data.table。难道我做错了什么?或者这是一个错误吗?

这是一个MWE:

library(data.table)
X = data.table(keyCol = 1)
setkey(X, keyCol)
Y = data.table(keyCol = 1, otherKey = 1:2)
setkeyv(Y, c("keyCol", "otherKey"))
X[Y, ] # 2 unique rows
unique(X[Y, ]) # Only 1 row???

我希望唯一(X [Y,])与X [Y,]相同,因为所有行都是唯一的,但事实并非如此。

1 个答案:

答案 0 :(得分:5)

by的{​​{1}}参数的默认值为unique.data.table。因此,如果您对键控data.table执行key(x),它只会查看键列。要覆盖它,请执行以下操作:

unique(x)
默认情况下,

unique(x, by = NULL) 会考虑所有列。或者,您也可以提供by = NULL