検索文字列のベクトルと、複数の一致文字を含む可能性のあるターゲット文字列があるとします。例えば色:複数のパターンに一致する複数の部分文字列を返す
search_strings <- c("Black","Grey","Green")
target_string <- "FooBlackBlahGreenBleh"
ベクトル( "黒"、 "緑")を出力する最も効率的な方法は何ですか。すなわち、ターゲット文字列内にある検索文字列のサブセットのベクトル?
検索文字列のベクトルと、複数の一致文字を含む可能性のあるターゲット文字列があるとします。例えば色:複数のパターンに一致する複数の部分文字列を返す
search_strings <- c("Black","Grey","Green")
target_string <- "FooBlackBlahGreenBleh"
ベクトル( "黒"、 "緑")を出力する最も効率的な方法は何ですか。すなわち、ターゲット文字列内にある検索文字列のサブセットのベクトル?
我々はgrepl
をベクトル化するVectorize
を使用することができます。
search_strings[Vectorize(grepl)(search_strings,target_string)]
# [1] "Black" "Green"
我々はまた、ベクトルを取ることができ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"
@ZheyuanLiおかげで削除することを、非マッチのためのNAを持っています。効率についてはわかりません。 'stringr'関数は' stringi'パッケージから最適化されています。 – akrun