首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查两个向量的等价性,更不用说顺序了

检查两个向量的等价性,更不用说顺序了
EN

Stack Overflow用户
提问于 2017-03-10 01:58:32
回答 2查看 33关注 0票数 0

假设我有一个数字向量,其中一个用作键:

代码语言:javascript
复制
key  <- c("A", "B")
vec1 <- c("B", "A")      #one that changes the order
vec2 <- c("A")           #one that is less one 
vec3 <- c("A", "B", "C") #one that is plus one
vec4 <- c("A", "B")      #this one is identical 

我希望支票的内容如下:

代码语言:javascript
复制
if(vec [has all the elements of] key == TRUE)

因此,结果会是:

代码语言:javascript
复制
vec1 == TRUE
vec2 == FALSE
vec3 == FALSE
vec4 == TRUE

我试过all()但是..。

代码语言:javascript
复制
all(key %in% vec1)  #TRUE  (as hoped)
all(key %in% vec2)  #FALSE (as hoped)
all(key %in% vec3)  #TRUE  (drat!)
all(key %in% vec3)  #TRUE  (as expected)

我可以在多个条件下完成工作:

代码语言:javascript
复制
all(key %in% vec1) & all(vec1 %in% key) #TRUE
all(key %in% vec2) & all(vec2 %in% key) #FALSE
all(key %in% vec3) & all(vec3 %in% key) #FALSE
all(key %in% vec4) & all(vec4 %in% key) #TRUE

我想知道有没有更优雅的方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 02:49:16

如果理解正确,您可以尝试setequal(key, vec)

对于上面的一组向量,它将生成以下结果:

代码语言:javascript
复制
> setequal(key, vec1)
[1] TRUE
> setequal(key, vec2)
[1] FALSE
> setequal(key, vec3)
[1] FALSE
> setequal(key, vec4)
[1] TRUE
票数 1
EN

Stack Overflow用户

发布于 2017-03-10 02:01:43

您可以对键和每个候选向量进行排序,并对排序后的版本进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42702322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档