Проверьте, присутствует ли элемент в другом векторе и выведите его значение - PullRequest
0 голосов
/ 30 августа 2018

Я хочу написать простой цикл, который проверяет, присутствует ли какой-либо элемент 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, поскольку 3 присутствует как в a.sub, так и a?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Оператор if примет во внимание только первый аргумент и выдаст предупреждающее сообщение. Если вы хотите напечатать результат для всех значений в a.sub, используйте ifelse, например:

ifelse(a.sub %in% a, a.sub, "Not found")
0 голосов
/ 30 августа 2018

Когда мы используем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...