2012-05-08 11 views
8

Qualcuno ha un trucco per rimuovere gli spazi finali sulle variabili con gsub?rimozione di spazi finali con gsub in R

Di seguito è riportato un esempio dei miei dati. Come puoi vedere, ho sia spazi finali che spazi incorporati nella variabile.

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

posso usare la seguente logica per rimuovere tutti gli spazi, ma quello che voglio veramente è quello di muovere solo gli spazi alla fine.

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

Qualsiasi assistenza sarebbe molto apprezzata.

+0

risposto anche qui: http://stackoverflow.com/a/2261149/1172302 –

risposta

10

si potrebbe usare un'espressione regolare:

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

$ stand per la fine della sequenza di testo, quindi, gli spazi solo finali sono abbinati. perl=T abilita le espressioni regolari per il modello di corrispondenza. Per ulteriori informazioni sulle espressioni regolari, vedere ?regex.

+0

vi ringrazio molto – MikeTP

+4

@MikeTP: notare che questo sistema funziona solo se c'è solo un unico spazio finale. Se il tuo vettore 'county' ha un elemento con più spazi finali, solo l'ultimo sarà rimosso. –

30

Leggi ?regex per avere un'idea di come funzionano le espressioni regolari.

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

[:space:] è una classe di caratteri pre-definito che corrisponde caratteri di spazio nel vostro locale. * dice di ripetere lo zero di corrispondenza o più volte e $ dice di corrispondere alla fine della stringa.

+0

grazie mille – MikeTP

+2

@ MikeTP Ha ben riassunto un sacco di funzioni stringa comuni nel suo pacchetto 'stringr'. Quello che fa questo è 'str_trim()'. – Justin

8

Se non è necessario utilizzare il comando gsub, la funzione str_trim è utile per questo.

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

Nota che 'str_trim' è un bel wrapper per gsub. Non sono chiaro su cosa intendi con "Se non hai bisogno di usare gsub". – Dason

+0

Questo rimuoverà qualsiasi numero di spazi alla fine della stringa, non solo uno. –

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

Sto cercando di capire questo, ma per me c'è solo uno spazio guida, non uno spazio finale? – TobiO

Problemi correlati