作者:浅笑你的妩媚 | 来源:互联网 | 2023-05-20 14:27
我在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> Arun..:
默认值by
论据unique.data.table
是key(x)
.因此,如果您unique(x)
使用键控data.table,它只会查看键列.要覆盖它,请执行:
unique(x, by = NULL)
by = NULL
默认情况下会考虑所有列.或者您也可以提供by = names(x)
.