R言語のstringrパッケージに含まれているstr_which()関数について解説します。この関数は、「文字列において、特定のパターンに一致する文字列が、ベクトルの何番目にあるか(インデックス/位置)を知りたい」ときに使える関数です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_which()は、指定した文字列に一致するインデックスを取得するための関数です。str_which()は、文字列の中でパターンに少なくとも1つ一致するインデックスを返します。これはwhich(str_detect(x, pattern))のラッパーであり、grep(pattern, x)と同等です。
使い方
str_which(string, pattern, negate = FALSE)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、vignette(“regular-expressions”)で説明されているように、正規表現です。一致動作をより細かく制御するには、regex()を使用してください。
fixed()を使用して、固定文字列(つまり、バイトのみを比較)に一致させます。これは高速ですが、近似値です。一般的に、人間のテキストをマッチングするには、指定されたロケールの文字マッチング規則を尊重するcoll()が必要です。
文字、単語、行、文の境界をboundary()でマッチングします。空のパターン””はboundary(“character”)と同等です。
TRUEの場合、結果のブールベクトルを反転します。
戻り値
通常は文字列よりも小さい整数ベクトルを返します。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
指定した文字列に一致するインデックスを取得する
文字列ベクトル(“ゆきや”, “こんこ”, “あられや”, “こんこ”, “ふっては”, “ふっては”, “ずんずん”, “つもる”)で”こんこ”のインデックスを取得するには次のようにします。
str_which(c("ゆきや", "こんこ", "あられや", "こんこ", "ふっては", "ふっては", "ずんずん", "つもる"), "こんこ")
[1] 2 4