如果在给定字符向量中的任何地方找到模式,R 中是否有一个grep
函数返回,否则返回?TRUE
FALSE
我看到的所有函数都返回找到的每个元素的当前位置的向量。
可能是grepl()
和的组合any()
?
像
> foo = c("hello", "world", "youve", "got", "mail")
> any(grepl("world", foo))
[1] TRUE
> any(grepl("hi", foo))
[1] FALSE
> any(grepl("hel", foo))
[1] TRUE
你的问题有点不清楚你是否希望最后一个例子返回真
也许您正在寻找grepl()
?
> grepl("is", c("This", "is", "a", "test", "isn't", "it?"))
[1] TRUE TRUE FALSE FALSE TRUE FALSE
第一个参数是您要查找的模式,第二个参数是您要匹配的向量,返回值是一个相同长度的布尔向量,描述该模式是否与每个元素匹配。
您在寻找“任何”吗?
> x<-c(1,2,3,4,5)
> x==5
[1] FALSE FALSE FALSE FALSE TRUE
> any(x==5)
[1] TRUE
请注意,您也可以对字符串执行此操作
> x<-c("a","b","c","d")
> any(x=="b")
[1] TRUE
> any(x=="e")
[1] FALSE
与 apply 结合使用会很方便:
> sapply(c(2,4,6,8,10), function(x){ x%%2==0 } )
[1] TRUE TRUE TRUE TRUE TRUE
> any(sapply(c(2,4,6,8,10), function(x){ x%%2!=0 } ))
[1] FALSE
grepl 是你要找的
grepl("is", "This is grepl test")
[1] TRUE
grepl("is not", "This is grepl test")
[1] FALSE