8

gsubを使用して変数の末尾のスペースを削除するトリックを持っている人はいますか?

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

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

次のロジックを使用してすべてのスペースを削除できますが、本当に必要なのは、最後のスペースのみを移動することです。

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

どんな援助でも大歓迎です。

4

4 に答える 4

32

?regex正規表現がどのように機能するかを理解するために読んでください。

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

[:space:]ロケールのスペース文字と一致する事前定義された文字クラスです。 *一致を0回以上繰り返すこと$を示し、文字列の終わりに一致することを示します。

于 2012-05-08T16:47:06.037 に答える
13

正規表現を使用できます。

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

$テキストシーケンスの終わりを表すため、末尾のスペースのみが一致します。perl=T一致パターンの正規表現を有効にします。正規表現の詳細については、を参照してください?regex

于 2012-05-08T16:46:32.110 に答える
8

gsubコマンドを使用する必要がない場合は、str_trim関数がこれに役立ちます。

    library(stringr)
    county <- c("mississippi ","mississippi canyon","missoula ",
        "mitchell ","mobile ", "mobile bay")
    str_trim(county)
于 2013-08-09T18:15:22.637 に答える
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::
于 2016-01-09T02:16:50.557 に答える