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

コメント