检查另一个向量中是否存在元素并打印其值

时间:2018-08-30 14:05:19

标签: r for-loop

我想编写一个简单的循环,检查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

由于3a.sub中都存在3,为什么循环不打印a

2 个答案:

答案 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")