2012-09-22 12 views

risposta

12

È possibile utilizzare uno length o identical

R> if (length(grep("w", data)) == 0) print ("ok") 
[1] "ok" 

R> if (identical(grep("w", data), integer(0))) print ("ok") 
[1] "ok" 

si potrebbe anche usare grepl invece di grep

R> if (!any(grepl("w", data))) print('ok') 
[1] "ok" 
+0

Se si sa che i dati sono un singolo valore, è possibile usare 'if (grepl (" w ", data))'. Che succede ora nel caso OPs e nel mio codice ... – TMS

3

Invece di grep, youcould utilizzare grepl che restituisce una logica:

> if (grepl("w",data)== FALSE) print ("ok") else print("donkeykong") 
[1] "ok" 


> if (grepl("h",data)== FALSE) print ("ok") else print("donkeykong") 
[1] "donkeykong" 
+1

se 'data' è maggiore di 1, riceverai un avviso – GSee

+2

@Gsee - punto valido, a quel punto probabilmente ti consiglio di usare' ifelse () invece, se vuoi una soluzione vettoriale ... o 'any()' come hai suggerito, abilmente. Non ho l'abitudine di leggere la mente il venerdì, però - è responsabilità dell'OP venire con qualcosa di rappresentativo del loro problema :) – Chase

Problemi correlati