« [Visual Basic]コマンドラインでコンパイルする | トップページ | [R]行列の積を求める »

2020年7月29日 (水)

[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]行列の積を求める »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [Visual Basic]コマンドラインでコンパイルする | トップページ | [R]行列の積を求める »

無料ブログはココログ

■■

■■■