R言語のstringrパッケージに含まれているstr_split()関数について解説します。この関数は、「どれだけ複雑で、何個に分かれるか分からない複数の文字列(ベクトル)であっても、すべてを取りこぼさずに分解したい」ときに使える関数です。長さや個数が予測できない複数の文字列を処理するときに便利です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_split()は、文字ベクトル内の各文字列を可変数の分割に分割して文字ベクトルのリストを返すための関数です。
使い方
str_split(string, pattern, n = Inf, simplify = FALSE)
引数
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
検索するパターンを指定します。
デフォルトの解釈は、vignette(“regular-expressions”)で説明されている正規表現です。マッチング動作をより細かく制御するには、regex()を使用してください。
fixed()を使用して、固定文字列(つまり、バイトのみを比較する)をマッチングします。これは高速ですが、近似値です。一般的に、人間のテキストをマッチングするには、指定されたロケールの文字マッチング規則を尊重するcoll()が適しています。
boundary()を使用して、文字、単語、行、文の境界をマッチングします。空のパターン””は、boundary(“character”)と同等です。
返される分割の最大数を指定します。
デフォルト(Inf)では、すべての可能な分割位置が使用されます。
真偽値を指定します。
- FALSE(デフォルト):文字ベクトルのリストを返します
- TRUE:文字行列を返します
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
文字列を分割する
文字ベクトル「りんご,ごりら,らっぱ」と「すずめ, めだか, からす」を「,」で分割して文字ベクトルのリストを返すには次のようにします。
str_split(c("りんご,ごりら,らっぱ", "すずめ, めだか, からす"), ",")
[[1]]
[1] "りんご" "ごりら" "らっぱ"
[[2]]
[1] "すずめ" " めだか" " からす"