grepl を使用して、R 文字ベクトル内の任意の文字列に一致するものを検索する

胡金庫 2023年1月30日
  1. R で grep または grepl 関数を使用してパターン一致を検索する
  2. grepl を使用して、R 文字ベクトル内の任意の文字列に一致させる
grepl を使用して、R 文字ベクトル内の任意の文字列に一致するものを検索する

この記事では、grepl を使用して R 文字ベクトル内の任意の文字列に一致するものを見つけるいくつかの方法について説明します。

R で grep または grepl 関数を使用してパターン一致を検索する

grep は、文字ベクトルのパターンマッチングに使用されます。パターン引数を正規表現として受け取り、それに応じて関数と照合されます。grep はデフォルトで一致した要素のインデックスのベクトルを返しますが、ユーザーが value パラメータに TRUE を割り当てた場合、一致した要素の文字ベクトルを返すこともできます。一方、grepl は、対応する要素がパターンに一致するかどうかを示すブール値のベクトルを返します。次の例は、任意のアルファベットと一致するアルファベットを示しており、期待どおりにすべての要素の一致結果が得られます。

grep("[a-z]", letters)
grep("[a-z]", letters, value = TRUE)
grepl("[a-z]", letters)
> grep("[a-z]", letters)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

> grep("[a-z]", letters, value = TRUE)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v"
[23] "w" "x" "y" "z"

> grepl("[a-z]", letters)
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[18] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

grepl を使用して、R 文字ベクトル内の任意の文字列に一致させる

grepl 関数は、対応するパターンで提供される文字列の任意の論理順列に一致させることができます。grepl はデフォルトでは異なる大文字と一致しないことに注意してください。次のコードスニペットは、The が見つかったすべての文字列に一致する最初の関数を示しています。一方、grepl への次の呼び出しは、The または the のいずれかを含む単語に一致します。

words <- c("The", "licenses", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- grepl("The", words)
i
i <- grepl("The|the", words)
i
[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

または、次のコードサンプルに示すように、if...else 関数を使用して、文字ベクトル内の一致または不一致の各要素の文字列値を出力することもできます。2 番目の呼び出しでは、e-h 範囲の文字を含む任意の文字列との照合が使用されることに注意してください。

words <- c("The", "Them", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- ifelse(grepl("The|the", words), "Tr", "Fa")
i <- ifelse(grepl("[e-h]", words), "Tr", "Fa")
i
[1] "Tr" "Tr" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Fa"
[18] "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa"

[1] "Tr" "Tr" "Tr" "Fa" "Tr" "Tr" "Fa" "Tr" "Fa" "Tr" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Tr"
[18] "Fa" "Tr" "Tr" "Tr" "Fa" "Fa" "Tr"
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook