2012-09-22 14 views

Respuesta

12

Puede utilizar cualquiera 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" 

También es posible usar grepl en lugar de grep

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

Si sabe que los datos tienen un solo valor, puede usar 'if (grepl (" w ", data))'. Lo que sucede en el caso OPs y en mi código ahora también ... – TMS

3

En lugar de grep, youcould utilizar grepl que devuelve una lógica:

> 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

si 'data' tiene una longitud mayor a 1, recibirá una advertencia – GSee

+2

@Gsee - punto válido, en ese punto probablemente recomendaría usar' ifelse () 'en su lugar, si quieres una solución vectorizada ... o' any() 'como sugieres, inteligentemente. Aunque no tengo la costumbre de leer la mente los viernes, es responsabilidad del OP presentar algo representativo de su problema :) – Chase