Jestem zdziwiony tym zachowaniem w R. Po prostu chcę zrobić prosty ciąg porównywania listy łańcuchów wyprodukowanych przez strsplit. Więc nie rozumiem, dlaczego poniższe dwa pierwsze fragmenty kodu spełniają moje oczekiwania, a trzecie nie.Porównywanie ciągów w "klauzuli" w pętli w R prowadzi do "warunek ma długość> 1 i używany będzie tylko pierwszy element"?
> for (i in strsplit("A text I want to display with spaces", " ")) { print(i) }
[1] "A" "text" "I" "want" "to" "display" "with" "spaces"
Ok, to ma sens ...
> for (i in strsplit("A text I want to display with spaces", " ")) { print(i=="want") }
[1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
Ok, to też. Ale co jest nie tak z następującą konstrukcją?
> 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
Dlaczego to nie drukuje "tak" po napotkaniu czwartego słowa? Co powinienem zmienić, aby uzyskać to pożądane zachowanie?
Ok, dzięki za wyjaśnienie! To był drugi test, który wprawił mnie w zakłopotanie: i == "chcę" wyprodukował sprawdzenie wszystkich słów w pierwszym wektorze znaku, zamiast używać i jako indeksu w otrzymanym wektorze. – yossarian