我想检查两个向量是否包含相同的元素,即使它们的顺序不同.例如,函数(让我们称之为SameElements)应满足以下条件:
SameElements(c(1, 2, 3), c(1, 2, 3)) # TRUE
SameElements(c(1, 2, 3), c(3, 2, 1)) # TRUE
SameElements(c(1, 2, 1), c(1, 2)) # FALSE
SameElements(c(1, 1, 2, 3), c(3, 2, 1)) # FALSE
Run Code Online (Sandbox Code Playgroud)
编辑1:指定当向量包含相同元素但频率不同时,该函数应返回F.
编辑2:清除问题以省略初始答案,因为现在是我的实际答案.
Mar*_*pov 36
我想你可以用 setequal(a,b)
更新了更新 setequal检查,如果两个向量由相同的元素组成,但它不检查这些元素在每个向量中是否具有相同的出现次数.
Max*_*nis 11
代替更清洁的替代方案,这是已知的解决方案:
SameElements <- function(a, b) return(identical(sort(a), sort(b)))
SameElements(c(1, 2, 3), c(1, 3, 2)) # TRUE
SameElements(c(1, 2, 3), c(1, 1, 3, 2)) # FALSE
Run Code Online (Sandbox Code Playgroud)
编辑:identical而不是all.equal(...) == T根据nrussell的建议.