R×stringr::str_subset 一致する文字列を検索する

R言語のstringrパッケージに含まれているstr_subset()関数について解説します。この関数は、「文字列のベクトルから、特定のパターンに一致する要素だけをフィルターして抽出したい」ときに使える関数です。stringrの一貫した文法(第一引数が常にデータ)で書けるため、パイプ処理(%>%|>)と非常に相性が良いのが特徴です。

stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

str_subset()は、一致する文字列を検索するための関数です。文字列の中でパターンに一致する要素を少なくとも1つ返します。これはx[str_detect(x, pattern)]のラッパーであり、grep(pattern, x, value = TRUE)と同等です。各文字列内で一致する要素の位置を検索するには、str_extract()を使用してください。

使い方


str_subset(string, pattern, negate = FALSE)

引数

string

文字ベクトルまたは文字ベクトルに変換可能なものを指定します。

pattern

検索するパターンを指定します。
デフォルトの解釈は、vignette(“regular-expressions”)で説明されている正規表現です。一致動作をより細かく制御するには、regex()を使用してください。
fixed()を使用して、固定文字列(つまり、バイトのみを比較)に一致させます。これは高速ですが、近似値です。一般的に、人間のテキストをマッチングするには、指定されたロケールの文字マッチング規則を尊重するcoll()を使用します。
文字、単語、行、文の境界をマッチングするには、boundary()を使用します。空のパターン””は、boundary(“character”)と同等です。

negate = FALSE

TRUEの場合、結果のブールベクトルを反転します。

戻り値

通常は文字列よりも小さい文字ベクトルです。

使用例

準備

あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(stringr)

一致する文字列を検索する

3つの文字列「りんご」「ごりら」「らっぱ」のそれぞれに対して、文字列「り」が含まれている文字列を取得するには次のようにします。


str_subset(c("りんご", "ごりら", "らっぱ"), "り")

[1] "りんご" "ごりら"

参考文献