我想编写一个简单的循环,检查a.sub
中是否存在a
的任何元素,然后提取该元素并打印其值
a.sub <- c(22,3)
a <- seq(1: 10)
if(a.sub %in% a){
present <- a.sub[a.sub %in% a] # this extract the value in `a.sub` which is present in `a`
print(present)
} else {
print("no element is present")
}
"no element is present"
Warning message:
In if (a.sub %in% a) { :
the condition has length > 1 and only the first element will be used
由于3
和a.sub
中都存在3,为什么循环不打印a
?
答案 0 :(得分:2)
当我们使用if/else
时,要考虑的一件事是条件生成的输出的长度。 if/else
期望长度为1的逻辑输出,并且未向量化。在这里,问题是要检查另一个向量中是否有一个向量的any
个元素
if(any(a.sub %in% a)) print(a.sub[a.sub %in% a]) else print("No element present")
#[1] 3
答案 1 :(得分:2)
if
语句仅考虑第一个参数,并发出警告消息。如果要打印a.sub中所有值的结果,请像这样使用ifelse
:
ifelse(a.sub %in% a, a.sub, "Not found")