R言語のstringrパッケージに含まれているstr_locate()関数について解説します。この関数は、「見つけたい文字が、何文字目から何文字目までにあるかを知りたい」ときに使える関数です。この関数は、文字列の中から特定の文字やパターン(正規表現)が最初に出現する位置(開始位置と終了位置)を検出する関数です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
目次
str_locate()
概要
str_locate()は、指定した文字列に最初に一致した開始位置と終了位置を取得するための関数です。
使い方
str_locate(string, pattern)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、正規表現です。 一致動作をより細かく制御するには、regex()を使用します。fixed()を使用して、固定文字列(つまり、バイトのみを比較する)を一致させます。 これは高速ですが、近似値です。一般に、人間のテキストを一致させるには、指定されたロケールの文字一致ルールを尊重するcoll()が必要になります。boundary()を使用して、文字、単語、行、文の境界を一致させます。空のパターン””は、boundary(“character”)と同等です。
str_locate_all()
概要
str_locate_all()は、指定した文字列に一致したすべての開始位置と終了位置を取得するための関数です。
使い方
str_locate_all(string, pattern)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、正規表現です。一致動作をより細かく制御するには、regex()を使用します。fixed()を使用して、固定文字列(つまり、バイトのみを比較する)を一致させます。これは高速ですが、近似値です。一般に、人間のテキストを一致させるには、指定されたロケールの文字一致ルールを尊重するcoll()が必要になります。boundary()を使用して、文字、単語、行、文の境界を一致させます。空のパターン””は、boundary(“character”)と同等です。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
解説のために、次の文字列を使用します。
s <- "So many men, so many minds."
str_locate()の使用例
文字列sで、「many」に最初に一致する開始位置と終了位置を取得するには次のようにします。
str_locate(s, "many")
start end
[1,] 4 7
str_locate_all()の使用例
文字列sで、「many」に一致するすべての開始位置と終了位置を取得するには次のようにします。
str_locate_all(s, "many")
start end
[1,] 4 7
[2,] 17 20