2013-07-15 20 views
7

In einem Skript, das ich versuche zu laufen manchmal sind Variablen gefüllt mit '' (was bedeutet: vollständig leer), z.Überprüfen, ob die Variable den Wert '' hat

variable <- '' 

Kennt jemand eine Methode, um zu prüfen, ob Variable den Wert '' hat?

is.null(variable) scheint nicht zu funktionieren. '' ist nicht dasselbe wie NULL.

Antwort

18

'' 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 ifTRUE 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.

+0

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

+0

@ user1983395 In der Tat, das ist eine ganz andere Frage. Lass mich meine Antwort ändern. –

+0

vielen dank! Sie haben mir sehr geholfen. – rdatasculptor

Verwandte Themen