我主要在 Mac 中使用 Rstudio。最近我不得不开始使用Windows。但是,我发现 unique() 不根据键在 data.table 中提供唯一行。这是一个例子:
a=c(2,3,3,3,3,5,6,7)
b=c("a","a","f","g","a","d","t","l")
e=data.table(a,b)
setkey(e, a)
key(e) # this works fine
unique(e)
unique() 仅删除整行(第 5 行)的重复项。完全相同的代码在我的 Mac 上运行良好。
那是因为两者都有不同的 data.table 版本。在 Mac 上,您拥有
如中所述?unique
(在 data.table V1.9.8+ 中):
默认情况下使用所有列。最近对此进行了更改
与 data.frame 方法的一致性。在
这意味着,从现在开始,您需要明确指定by
即使您已经设置了键,也可以使用变量,否则它将仅使用所有列。
对于您的具体示例,这有效
unique(e, by = "a")
# a b
# 1: 2 a
# 2: 3 a
# 3: 5 d
# 4: 6 t
# 5: 7 l
或者正如@Frank 在评论中提到的,您也可以在by
参数使用unique(a, by = key(a))
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)