[R]文字列の前後の空白を取り除く
trimws関数を使う。デフォルトでは前後の空白を取り除くが、第2引数に l か r を指定することで、前だけ、後ろだけの空白を取り除くことができる。l と r はそれぞれ left と right の略。デフォルトは前後を取り除く b (both の略)が指定された状態になっている。
> s1 <- " ABC "
> trimws(s1)
[1] "ABC"
> trimws(s1, "l")
[1] "ABC "
> trimws(s1, "r")
[1] " ABC"
> trimws(s1, "b")
[1] "ABC"
> trimws(s1, "both")
[1] "ABC"
trimwsは内部でsub関数を呼び出しており、内部的にsub関数を使い正規表現を使うことで動作している。その除去をする文字列はデフォルトでは正規表現で [ \t\r\n] と指定している。これは、①空白、②タブ、③復帰、④改行、①~④のすべてということ。
いわゆる全角空白も取り除きたければ、whitespace オプションに全角空白を指定すればよい。以下は、前後の半角空白か全角空白を取り除いた例。whitespace に [ ] (半角空白1つと全角空白1つ)を指定している。文字型ベクトル s2 は「あいう」の前には半角空白が2つ、後ろには全角空白が2つついている。
> s2 <- " あいう "
> trimws(s2)
[1] "あいう "
> trimws(s2, whitespace = "[ ]")
[1] "あいう"
> trimws(s2, "b", whitespace = "[ ]")
[1] "あいう"
当然、ベクトルも扱える。
> s3 <- c(" AB ", " あいう ")
> trimws(s3, whitespace = "[ ]")
[1] "AB" "あいう"
« [Visual Basic]コマンドラインでコンパイルする | トップページ | [R]行列の積を求める »

コメント