Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在data.table中使用unique时出现意外结果_R_Unique_Data.table - Fatal编程技术网

R 在data.table中使用unique时出现意外结果

R 在data.table中使用unique时出现意外结果,r,unique,data.table,R,Unique,Data.table,给定数据表(第1.9.5版) 我得到这个结果: V1 V2 1: 1 1 2: 2 1 3: 3 1 4: 4 1 5: 5 2 这真的是故意的恶作剧还是一只虫子? 或者我只是没有正确地使用它 我在读“R书”,在一个例子中,他们使用TEST[unique(vegeture),]并说它的目的是为植被选择唯一行的子集 我希望得到类似的东西 V1 V2 1: 1 1 2: 5 2 3: 9 3 4: 13 4 5: 16 5 虽然我知道这

给定数据表(第1.9.5版)

我得到这个结果:

   V1 V2
1:  1  1
2:  2  1
3:  3  1
4:  4  1
5:  5  2
这真的是故意的恶作剧还是一只虫子? 或者我只是没有正确地使用它

我在读“R书”,在一个例子中,他们使用TEST[unique(vegeture),]并说它的目的是为植被选择唯一行的子集

我希望得到类似的东西

   V1  V2
1:  1   1
2:  5   2
3:  9   3
4:  13  4
5:  16  5
虽然我知道这需要指定一个聚合标准。

TEST[,unique(V2)]
给出了
[1]12345
。因为
TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug

要获得预期结果,可以执行以下操作:

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
TEST[,unique(V2)]
给出了
[1]12345
。因为
TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug

要获得预期结果,可以执行以下操作:

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
TEST[,unique(V2)]
给出了
[1]12345
。因为
TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug

要获得预期结果,可以执行以下操作:

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
TEST[,unique(V2)]
给出了
[1]12345
。因为
TEST[1:5]
应该给出前5行,这就是您得到的,所以没有bug

要获得预期结果,可以执行以下操作:

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


你能解释一下为什么你对这个结果感到惊讶吗
unique(V2)
给出了
c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,
TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了
unique
的作用。使用类似语法的一种有点复杂的方式:
setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗
unique(V2)
给出了
c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,
TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了
unique
的作用。使用类似语法的一种有点复杂的方式:
setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗
unique(V2)
给出了
c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,
TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了
unique
的作用。使用类似语法的一种有点复杂的方式:
setkey(TEST,V2);TEST[J(unique(V2)),mult=“first”]
Fyi,这本书没有涵盖数据表。你能解释一下为什么你对这个结果感到惊讶吗
unique(V2)
给出了
c(1,2,3,4,5)
既然你在i中有这个,你就得到了前5行。你可能想要它在j中,例如,
TEST[,unique(V2)]
?我回答你的主要问题你似乎误解了
unique
的作用。使用类似语法的一种有点复杂的方式:
setkey(TEST,V2);测试[J(唯一(V2)),mult=“first”]
Fyi,R手册不包括数据表。