2016-09-01 15 views
0

検索文字列のベクトルと、複数の一致文字を含む可能性のあるターゲット文字列があるとします。例えば色:複数のパターンに一致する複数の部分文字列を返す

search_strings <- c("Black","Grey","Green") 
target_string <- "FooBlackBlahGreenBleh" 

ベクトル( "黒"、 "緑")を出力する最も効率的な方法は何ですか。すなわち、ターゲット文字列内にある検索文字列のサブセットのベクトル?

答えて

3

我々はgreplをベクトル化するVectorizeを使用することができます。

search_strings[Vectorize(grepl)(search_strings,target_string)] 
# [1] "Black" "Green" 
1

我々はまた、ベクトルを取ることができstr_matchを使用することができます。私たちは、出力として得たvectorたちは、フィードバックのためのis.na

library(stringr) 
v1 <- str_match(target_string, search_strings)[,1] 
v1 
#[1] "Black" NA  "Green" 
v1[!is.na(v1)] 
#[1] "Black" "Green" 
+0

@ZheyuanLiおかげで削除することを、非マッチのためのNAを持っています。効率についてはわかりません。 'stringr'関数は' stringi'パッケージから最適化されています。 – akrun

関連する問題