1

を使用するときに変数を適切に除外するのに苦労していますgrepl

私のベクトルが

 vec = c("POP MUSIC",  "TOP THE POPS", "POPEYE", "MARY POPPINS") 

grepl POPポップミュージックを視覚的に認識したい。私の例では、除外したいと思い"POPEYE", "MARY POPPINS"ます。

どうすれば次のようなことができますか? そして、なぜこのコード行が機能しないのでしょうか?

vec[ grepl("POP", vec ) & grepl("^POPEY$", vec ) & grepl("^MARY POPPINS$", vec ) ] 

望ましい結果

"POP MUSIC" "TOP THE POPS"

ありがとう

4

1 に答える 1

1

次のgrep解決策を使用できます。

vec = c("POP MUSIC",  "TOP THE POPS", "POPEYE", "MARY POPPINS") 
grep("(?i)\\bPOPS?\\b", vec, value = TRUE)

IDEONE デモを見る

正規表現(?i)\\bPOPS?\\bは単語全体POPまたはPOPS大文字と小文字を区別しない方法で ( により(?i)) 一致し、見つかった場合は値が返されます ( によりvalue=TRUE)。

必要に応じて正規表現を調整する必要がある場合があります (たとえば(?i)\\bPOP(S|PING)?\\b、 も許可するpoppingなど)。

于 2015-10-09T15:25:54.370 に答える