【发布时间】:2017-07-30 20:24:10
【问题描述】:
假设我有一个数字向量,其中一个充当键:
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
我希望支票如下:
if(vec [has all the elements of] key == TRUE)
所以,结果会:
vec1 == TRUE
vec2 == FALSE
vec3 == FALSE
vec4 == TRUE
我试过all() 但是...
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)
我可以在多种条件下完成工作:
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
我想知道是否有更优雅的方式?
【问题讨论】:
-
setequal假设你没有/不关心重复的元素。
标签: r if-statement vector