[R]文字列を特定の文字または文字列で分割する
stringrパッケージのstr_split関数を使う。分割する文字列はベクトルで与えることができる。戻り値はリスト。分割させる文字または文字列は正規表現で指定することができる。
> library(stringr)
> s <- c("A B C", " D E F ")
> str_split(s, " ")
[[1]]
[1] "A" "B" "C"
[[2]]
[1] "" "D" "E" "" "F" ""
上の例では、1つの空白(0x20)で分割しようとしたが、ベクトルの2番目の要素は与えた文字列の先頭や最後に空白が含まれており、文字間の空白も1つ以上のため、分割がうまくいっていない。このような場合はあらかじめ前後の空白をtrimws関数で取り除き、正規表現のパターンを「[ ]+」(1つ以上の連続した空白(0x20))とすればよい。
> str_split(trimws(s), "[ ]+")
[[1]]
[1] "A" "B" "C"
[[2]]
[1] "D" "E" "F"
strsplit関数の戻り値はリストであり、これをベクトルにする場合はunlist関数を使う。
> unlist(str_split(trimws(s), "[ ]+"))
[1] "A" "B" "C" "D" "E" "F"
規則性なく空白が含まれるCSVの文字列の場合は、以下のような分割パターンを正規表現で与えれば、うまく分割することができる。
> unlist(str_split(trimws(s), "[ ,]+"))
[1] "A" "B" "C"
« [R]日付時刻型ベクトルの特定の要素(年、月、日、時、分、秒)だけを修正する | トップページ | [R]プロキシを設定する(Windows版) »
「R(文字と文字列)」カテゴリの記事
- [R]同じ文字列を繰り返した文字列を作成する(2026.02.02)
- [R]文字列が数値に変換できるかどうか判定する(2025.12.31)
- [R]文字列の長さを得る(2025.12.30)
- [R]空白を追加した指定の長さの文字列を得る(2025.12.26)
- [R]文字列型ベクトルの要素を連結して文字列を作る(2025.12.17)
« [R]日付時刻型ベクトルの特定の要素(年、月、日、時、分、秒)だけを修正する | トップページ | [R]プロキシを設定する(Windows版) »

コメント