Сравнение строк в «if-clause» в цикле R приводит к тому, что «условие имеет длину> 1, и будет использоваться только первый элемент»?

Меня озадачивает такое поведение в R. Я просто хочу провести простое сравнение строк списка строк, созданных strsplit. Так что не понимаю, почему следующие два первых фрагмента кода делают то, что я ожидал, а третий - нет.

> for (i in strsplit("A text I want to display with spaces", " ")) { print(i) }
[1] "A"       "text"    "I"       "want"    "to"      "display" "with"    "spaces" 

Хорошо, в этом есть смысл ...

> for (i in strsplit("A text I want to display with spaces", " ")) { print(i=="want") }
[1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE

Хорошо, это тоже. Но что не так в следующей конструкции?

> for (i in strsplit("A text I want to display with spaces", " ")) { if (i=="want")     print("yes") }
Warning message:
In if (i == "want") print("yes") :
  the condition has length > 1 and only the first element will be used

Почему она просто не выводит «да», когда встречается четвертое слово? Что мне нужно изменить, чтобы получить желаемое поведение?

5
задан yossarian 30 October 2011 в 18:20
поделиться