2014-09-03 5 views
23

Immagino che sia incredibilmente semplice ma non riesco a trovare la risposta.R - Come eseguire il test per il carattere (0) nell'istruzione IF

Sto scrivendo un'istruzione IF ma il test è se l'oggetto restituisce un valore character(0). Non sono sicuro di come gestire character(0) nell'istruzione.

Supponendo Test <- character(0) o un valore:

if (identical(Pols4,character(0))) { 
    print('Empty') 
} else { 
    print('Not Empty') 
} 

Ancora non sembra funzionare .....

+2

'length (character (0))' è zero, quindi 'if (length (x))' dovrebbe fare. – tonytonov

+3

No, mi dispiace, non è così. 'length (NULL)' è anche zero, e 'length (numeric (0))'. –

+1

Cambiare la prima linea in "if (identico (Test, carattere (0)))" non ha funzionato? –

risposta

37

utilizzare la funzione identical di controllare questo.

a <- character(0) 
identical(a, character(0)) # returns TRUE 

identical(a, "")   # returns FALSE 
identical(a, numeric(0)) # returns also FALSE 
+0

Stavo ancora ottenendo un ritorno' FALSE' finché non ho usato 'identico (a, as.Date (carattere (0))' perché il valore mostrato come 'carattere (0)' anche dopo che avevo lanciato il risultato come una data precedente nel mio codice –

+0

Se lanci un valore su Date, non è identico a 'character (0)', quindi questo comportamento è perfettamente corretto. 'quote (character (0))' come 'character (0)' nella console e definitivamente non identico a 'character (0)'. –

+0

Non mi sono lamentato, stavo solo condividendo nel caso in cui altri avessero un caso simile. –