''
ist ein leeres Zeichen. Es tut nicht bedeuten "komplett leer" - das ist in der Tat NULL
.
für sie zu testen, nur auf Gleichheit überprüfen:
if (variable == '') …
Wenn Sie , ob eine Variable existiert, überprüfen möchten Sie verwenden müssen ... exists
:
if (exists('variable')) …
Aber in der Tat Es gibt sehr wenige Anwendungsfälle für exists
in normalem Code, da Sie als Autor des Codes wissen sollten, welche Variablen existieren und welche nicht. Es ist hauptsächlich in Bibliotheksfunktionen nützlich.
jedoch der Fehler Sie bekommen,
fehlenden Wert wo WAHR/FALSCH
benötigt
nicht nicht bedeutet, dass die Variable nicht existiert. Eher kann if
nicht mit fehlenden Werten umgehen - d. H. NA
. Ein NA
tritt als Ergebnis vieler Berechnungen auf, die selbst einen NA
-Wert enthalten. Zum Beispiel vergleicht NA
auf einen beliebigen Wert (auch NA
selbst) ergibt wieder NA
:
variable = NA
variable == NA
# [1] NA
Seit if
TRUE
oder FALSE
erwartet, kann es nicht mit NA
beschäftigen. Wenn es eine Chance, dass Ihre Werte NA
sein können, müssen Sie für diese explizit überprüfen:
if (is.na(variable) || variable == '') …
Allerdings ist es normalerweise eine bessere Idee NA
Werte von Daten aus der get-go auszuschließen, so dass sie shouldn nicht in eine Situation wie die oben genannten propagieren.
Dank! vielleicht habe ich die falsche Frage gestellt. Das ist der Fehler, den ich erhalte: "Fehler in if (variable ==" ") {: fehlender Wert, wo TRUE/FALSE benötigt wird". Variable scheint nicht einmal zu existieren (muss ein Fehler in meinem Skript sein).Gibt es eine Möglichkeit zu überprüfen, ob eine Variable existiert? – rdatasculptor
@ user1983395 In der Tat, das ist eine ganz andere Frage. Lass mich meine Antwort ändern. –
vielen dank! Sie haben mir sehr geholfen. – rdatasculptor