R言語のstringrパッケージに含まれているstr_detect()関数について解説します。この関数は、「文字列の中に、特定の文字やパターンが『含まれているかどうか』を判定する」ときに使える関数です。結果は数値ではなく、TRUE(含まれている)かFALSE(含まれていない)の二択で返ってきます。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_detect()は、文字列でパターンの一致の有無を検出するための関数です。str_detect()は、パターンに一致する文字列の各要素に対してTRUEを返し、それ以外の場合はFALS を返す論理ベクトルを返します。これはgrepl(pattern, string)と同等です。
使い方
str_detect(string, pattern, negate = FALSE)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、正規表現です。一致動作をより細かく制御するには、regex()を使用します。fixed()を使用して、固定文字列(つまり、バイトのみを比較する)を一致させます。これは高速ですが、近似値です。一般に、人間のテキストを一致させるには、指定されたロケールの文字一致ルールを尊重するcoll()が必要になります。boundary()を使用して、文字、単語、行、文の境界を一致させます。空のパターン””は、boundary(“character”) と同等です。
TRUEの場合、結果の真偽値ベクトルを反転します。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
特定の文字を含むかどうかを確認する
文字列「あいうえおあいう」内で文字列「あ」を含むかどうかを確認するには次のようにします。
str_detect("あいうえお", pattern = "あ")
[1] TRUE
次のように、文字列のベクトルとして指定することもできます。
str_detect(c("あいうえお", "かきくけこ"), pattern = "あ")
[1] TRUE FALSE