R - " fehlender Wert wo TRUE/FALSE benötigt "

Ich versuche, den folgenden Code in R auszuführen

comments = c("no","yes",NA)
for (l in 1:length(comments)) {
    if (comments[l] != NA) print(comments[l]);
}

Aber ich erhalte eine Fehlermeldung

Error in if (comments[l] != NA) print(comments[l]) : missing value where TRUE/FALSE needed

Was'ist hier los?

Lösung

Prüfen Sie den Befehl: NA!=NA: Sie erhalten das Ergebnis NA, daher die Fehlermeldung.

Sie müssen die Funktion is.na verwenden, damit Ihre if-Anweisung funktioniert (im Allgemeinen ist es immer besser, diese Funktion zu verwenden, um auf NA-Werte zu prüfen):

comments = c("no","yes",NA)
for (l in 1:length(comments)) {
    if (!is.na(comments[l])) print(comments[l])
}
[1] "no"
[1] "yes"
Kommentare (2)

Können Sie die if-Bedingung wie folgt ändern:

if (!is.na(comments[l])) print(comments[l]);

Mit is.na() können Sie nur auf NA-Werte prüfen.

Kommentare (2)