我有一个名为
的对象 fruits<-c("apple","banana","pineapple","mango")
我有一个名为
的对象 wanted.string<-c("app","ana")
我想将wanted.string
中的字符串与水果中的字符串匹配(因此匹配这些字符串中的任何位置)并获得匹配的结果,即
apple, banana, pineapple
答案 0 :(得分:4)
#Paste everything together into a large OR statement
wnt <- paste0(wanted.string, collapse="|")
#Then see if any match
grep(wnt, fruits, value=TRUE)
## [1] "apple" "banana" "pineapple"
答案 1 :(得分:3)
另一个选项是来自str_detect
的{{1}},它通过'string'和'pattern'进行矢量化。我们得到一个带stringr
的逻辑向量,可用于对原始向量进行子集化。
str_detect
答案 2 :(得分:2)
grep
与sapply
:
unlist(sapply(wanted.string, function(ii) grep(ii, fruits, value=TRUE)))
# app1 app2 ana
# "apple" "pineapple" "banana"