R言語のstringrパッケージに含まれているinvert_match()関数について解説します。この関数は、「『マッチした部分』ではなく、『マッチしなかった残りの部分』の位置情報を取得したい」ときに使える関数です。マッチした部分を基準にして、文字列を「それ以外」の場所で分割・抽出したいときや、特定の文字(カンマやスペースなど)の「間の文字」だけを切り出したいときに使えます。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
invert_match()は、stringr::str_locate()の結果を反転させるための関数です。
使い方
invert_match(loc)
引数
loc
str_locate()、str_locate_all()からの一致位置の行列を指定します。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
解説のために、次の文字列を使用します。
s <- "So many men, so many minds."
最初に一致する開始位置と終了位置を反転させる
文字列sで、「many」に最初に一致する開始位置と終了位置を反転させるには次のようにします。
invert_match(str_locate(s, "many"))
start end
0 3
end 8 -1