2012-05-08 9 views
8

gsubで変数の末尾の空白を削除する方法はありますか?末尾の空白をR内のgsubで削除する

以下は私のデータのサンプルです。ご覧のように、変数にはスペースとスペースの両方が埋め込まれています。

county <- c("mississippi ","mississippi canyon","missoula ", 
      "mitchell ","mobile ", "mobile bay") 

次のロジックを使用してすべてのスペースを削除できますが、実際にはスペースを最後に移動するだけです。

county2 <- gsub(" ","",county) 

ご協力いただければ幸いです。あなたのテキストシーケンスの終わりのための

county <- c("mississippi ","mississippi canyon","missoula ", 
     "mitchell ","mobile ", "mobile bay") 
county2 <- gsub(" $","", county, perl=T) 

$スタンド、したがって、唯一の末尾のスペースが一致している:

+0

もここで答え:ただ一つの末尾のスペースがある場合にのみ動作しますのでご注意:http://stackoverflow.com/a/2261149/1172302 –

答えて

10

あなたは正規表現を使用することができます。 perl=Tは、マッチパターンの正規表現を有効にします。 正規表現の詳細については、?regexを参照してください。

+0

は非常に – MikeTP

+4

@MikeTPをお願いします。あなたの 'county'ベクトルに複数の末尾のスペースがある要素がある場合、最後のものだけが削除されます。 –

30

?regexを読むと、正規表現の仕組みを知ることができます。

gsub("[[:space:]]*$","",county) 

[:space:]あなたのロケールでスペース文字に一致する事前定義された文字クラスです。 *は0回以上一致を繰り返すと言い、$は文字列の最後に一致すると言います。

+0

ありがとうございました – MikeTP

+2

@MikeTP彼のパッケージ 'stringr'によくある文字列関数をうまくまとめています。これを行うものは 'str_trim()'です。 – Justin

8

gsubコマンドを使用する必要がない場合は、str_trim関数を使用すると便利です。

library(stringr) 
    county <- c("mississippi ","mississippi canyon","missoula ", 
     "mitchell ","mobile ", "mobile bay") 
    str_trim(county) 
+1

'str_trim'はgsubの素晴らしいラッパーです。私は、あなたが「gsubを使う必要がないならば」という意味がはっきりしていません。 – Dason

+0

これは、文字列の末尾に1つだけでなく、いくつでもスペースを削除します。 –

0
Above solution can not be generalized. Here is an example: 


    a<-" keep business moving" 
    str_trim(a) #Does remove trailing space in a single line string 

However str_trim() from 'stringr' package works only for a vector of words and a single line but does not work for multiple lines based on my testing as consistent with source code reference. 

    gsub("[[:space:]]*$","",a) #Does not remove trailing space in my example 
    gsub(" $","", a, perl=T) #Does not remove trailing space in my example 

Below code works for both term vectors and or multi-line character vectors which was provided by the reference[1] below. 

    gsub("^ *|(?<=) | *$", "", a, perl=T) 


#Reference:: 
+0

私はこれを理解しようとしていますが、私にとって先導スペースだけがあり、後スペースはありません。 – TobiO

関連する問題