给出data.table(vith版本1.9.5)
TEST <- data.table(1:20,rep(1:5,each=4, times=1))
如果我这样做:
TEST[unique(V2)]
我得到了这个结果:
V1 V2
1: 1 1
2: 2 1
3: 3 1
4: 4 1
5: 5 2
它真的是预期的行为还是一个bug? 或者我只是没有正确使用它?
我正在阅读“R书”,在一个例子中,他们使用TEST [unique(Vegetation),]并说它的目的是为植被选择一个独特的行子集。
我希望得到像
这样的东西 V1 V2
1: 1 1
2: 5 2
3: 9 3
4: 13 4
5: 16 5
虽然我明白需要指定汇总标准。
答案 0 :(得分:3)
TEST[,unique(V2)]
给出[1] 1 2 3 4 5
。由于TEST[1:5]
应该为您提供前5行,这就是您所获得的,所以没有错误。
要获得预期结果,您可以这样做:
TEST[!duplicated(V2)]
# V1 V2
#1: 1 1
#2: 5 2
#3: 9 3
#4: 13 4
#5: 17 5
或者这个:
TEST[, V1[1], by = V2]
# V2 V1
#1: 1 1
#2: 2 5
#3: 3 9
#4: 4 13
#5: 5 17
或@Arun提醒我现在有一个unique
的data.table方法:
unique(TEST, by="V2")
# V1 V2
#1: 1 1
#2: 5 2
#3: 9 3
#4: 13 4
#5: 17 5