1. ホーム
  2. r

[解決済み] 先頭と末尾の空白を削除するにはどうしたらよいですか?

2022-03-23 22:27:53

質問

data.frameの先頭と末尾の空白に問題があります。

例えば、ある特定の row の中で data.frame を、ある条件に基づいて実行します。

> myDummy[myDummy$country == c("Austria"),c(1,2,3:7,19)] 



[1] codeHelper     country        dummyLI    dummyLMI       dummyUMI       

[6] dummyHInonOECD dummyHIOECD    dummyOECD      

<0 rows> (or 0-length row.names)

オーストリアという国は、明らかに私の data.frame . 自分のコード履歴を調べて、何が悪かったのか考えてみました。

> myDummy[myDummy$country == c("Austria "),c(1,2,3:7,19)]
   codeHelper  country dummyLI dummyLMI dummyUMI dummyHInonOECD dummyHIOECD
18        AUT Austria        0        0        0              0           1
   dummyOECD
18         1

コマンドで変更したのは、Authoriaの後に空白を追加したことだけです。

さらに厄介な問題が発生するのは明らかです。例えば、国名カラムに基づいて2つのフレームをマージしたい場合です。ひとつは data.frame"Austria " であるのに対し、もう一方のフレームは "Austria" . マッチングがうまくいきません。

  1. 問題を認識するために、画面上に空白を「表示」する良い方法はありますか?
  2. また、Rで先頭と末尾の空白を削除することは可能ですか?

これまでは、単純な Perl スクリプトを使えば、白のペースを削除することができますが、どうにかしてRの内部でそれを行うことができればいいのですが。

解決方法は?

おそらく最も良い方法は、データファイルを読み込む際に、末尾の空白を処理することです。もし read.csv または read.table を設定することで、パラメータ strip.white=TRUE .

もし、文字列を後できれいにしたい場合は、これらの関数のいずれかを使用することができます。

# Returns string without leading white space
trim.leading <- function (x)  sub("^\\s+", "", x)

# Returns string without trailing white space
trim.trailing <- function (x) sub("\\s+$", "", x)

# Returns string without leading or trailing white space
trim <- function (x) gsub("^\\s+|\\s+$", "", x)

これらの関数のいずれかを myDummy$country :

 myDummy$country <- trim(myDummy$country)


空白を「見せる」ためには、こうすればいい。

 paste(myDummy$country)

とすると、引用符(")で囲まれた文字列が表示され、空白を見つけやすくなります。