为什么 unique 命令的行为类似于 intersect 命令?
Why does unique command act like intersect command?
我已经检查了问题,但找不到任何解释。
所以我有两个向量,我只想选择一个有而另一个没有的不同元素。
我假设为向量定义如下:
hypo1=c("a01","a02","a03","a04","b01","b02","b03","b04","c01","c02","c03","c04")
hypo2=c("a03","a04","b01","b02","c02","c03")
然后想查看这两个向量中的重复项。
intersect(hypo1,hypo2)
[1] "a03" "a04" "b01" "b02" "c02" "c03"
这看起来工作正常。
但是,当我想查看 hypo1
具有而 hypo2
没有的唯一元素时,我在第一个向量中恢复了所有元素。如:
unique(hypo1,hypo2)
[1] "a01" "a02" "a03" "a04" "b01" "b02" "b03" "b04" "c01" "c02" "c03" "c04"
然后我改变了我创建的向量的顺序,它给出了相交命令的结果,比如
unique(hypo2,hypo1)
[1] "a03" "a04" "b01" "b02" "c02" "c03"
我在网上做了一些挖掘,但找不到我遗漏的东西。我需要找到一个数据具有而另一个数据没有的独特元素。
你想要setdiff(hypo2, hypo1)
。 unique(hypo2, hypo1)
的意思完全不同:它意味着您想要 hypo2
中的唯一条目,但如果它们在 hypo1
中列出,则允许重复值。这在帮助页面 ?unique
.
上有解释
例如,
unique(c(1,2,2,3,3,4,4,4), c(3,4))
给予
[1] 1 2 3 3 4 4 4
因为3和4已经声明为"incomparables"。另一方面,
setdiff(c(1,2,2,3,3,4,4,4), c(3,4))
给予
[1] 1 2
这就是我认为您正在寻找的东西。
Unique 只允许一个向量作为参数x
。第二个向量将用作参数 incomparables
。从 ?unique
我们了解到这些值
will never be marked as duplicated. This is intended to be used for a fairly small set of values and will not be efficient for a very large set.
提取重叠/不同值的一种方法是:
hypo1[!hypo1 %in% hypo2]
# [1] "a01" "a02" "b03" "b04" "c01" "c04"
hypo1[hypo1 %in% hypo2]
# [1] "a03" "a04" "b01" "b02" "c02" "c03"
由于 setdiff
与第一行的结果相同,因此对于适当大小的数据集来说,基准测试是必要的,以显示性能差异。
我已经检查了问题,但找不到任何解释。
所以我有两个向量,我只想选择一个有而另一个没有的不同元素。
我假设为向量定义如下:
hypo1=c("a01","a02","a03","a04","b01","b02","b03","b04","c01","c02","c03","c04")
hypo2=c("a03","a04","b01","b02","c02","c03")
然后想查看这两个向量中的重复项。
intersect(hypo1,hypo2)
[1] "a03" "a04" "b01" "b02" "c02" "c03"
这看起来工作正常。
但是,当我想查看 hypo1
具有而 hypo2
没有的唯一元素时,我在第一个向量中恢复了所有元素。如:
unique(hypo1,hypo2)
[1] "a01" "a02" "a03" "a04" "b01" "b02" "b03" "b04" "c01" "c02" "c03" "c04"
然后我改变了我创建的向量的顺序,它给出了相交命令的结果,比如
unique(hypo2,hypo1)
[1] "a03" "a04" "b01" "b02" "c02" "c03"
我在网上做了一些挖掘,但找不到我遗漏的东西。我需要找到一个数据具有而另一个数据没有的独特元素。
你想要setdiff(hypo2, hypo1)
。 unique(hypo2, hypo1)
的意思完全不同:它意味着您想要 hypo2
中的唯一条目,但如果它们在 hypo1
中列出,则允许重复值。这在帮助页面 ?unique
.
例如,
unique(c(1,2,2,3,3,4,4,4), c(3,4))
给予
[1] 1 2 3 3 4 4 4
因为3和4已经声明为"incomparables"。另一方面,
setdiff(c(1,2,2,3,3,4,4,4), c(3,4))
给予
[1] 1 2
这就是我认为您正在寻找的东西。
Unique 只允许一个向量作为参数x
。第二个向量将用作参数 incomparables
。从 ?unique
我们了解到这些值
will never be marked as duplicated. This is intended to be used for a fairly small set of values and will not be efficient for a very large set.
提取重叠/不同值的一种方法是:
hypo1[!hypo1 %in% hypo2]
# [1] "a01" "a02" "b03" "b04" "c01" "c04"
hypo1[hypo1 %in% hypo2]
# [1] "a03" "a04" "b01" "b02" "c02" "c03"
由于 setdiff
与第一行的结果相同,因此对于适当大小的数据集来说,基准测试是必要的,以显示性能差异。