在R中,有一个比较似乎很奇怪:
> logical(0) == logical(0)
logical(0)
> logical(0) != logical(0)
logical(0)
Run Code Online (Sandbox Code Playgroud)
==并!=进行逐元素比较。结果的长度应与输入的长度相同(如有必要,在回收之后),因此结果的长度应为0,因为它们的长度均为0。
这不是在问两个集合/向量整体是否相等。如果需要,则应使用identical或all.equal根据您的特定用例而定。
> identical(logical(0), logical(0))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
编辑:在我看来,您可能对set equals感兴趣,而不是完全相同或全部。如果要测试两个向量是否包含相同的值,可以使用setequal。
> setequal(1:3, 1:2)
[1] FALSE
> # order doesn't matter for sets
> setequal(c(1,2), c(2,1))
[1] TRUE
> setequal(logical(0), logical(0))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)