如何处理grep失败返回R中的整数(0)?

时间:2012-09-22 00:48:44

标签: r grep return-value

在grep表达式中,当grep的值为integer(0)时,打印“ok”,我该怎么办?

> data="haha"
> grep("w",data)
integer(0)
> if (grep("w",data)==0) print ("ok")
Error in if (grep("w", data) == 0) print("ok") : 
  argument is of length zero

2 个答案:

答案 0 :(得分:14)

您可以使用lengthidentical

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

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

您也可以使用grepl代替grep

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

答案 1 :(得分:3)

而不是grep,您可以使用grepl来返回逻辑:

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


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