2012-08-02 13 views
17

Sto cercando di rimuovere la sottostringa prima del trattino di sottolineatura nella stringa. voglio usare * (jolly) come il bit prima che la sottolineatura può variare:Rimuovi modello da stringa con gsub

a <- c("foo_5", "bar_7") 

a <- gsub("*_", "", a, perl = TRUE) 

Il risultato dovrebbe essere simile:

> a 
[1] 5 7 

Ho anche provato cose come "^ * " o " ? "ma non ha funzionato davvero.

risposta

34

Il seguente codice funziona sul tuo esempio:

gsub(".*_", "", a) 
+0

grande grazie. Cosa fa il '.' sta per? Perché la stella "*" (carattere jolly) non funziona da sola? Non capisco? – user969113

+4

'.' sta per qualsiasi carattere, così che ". *" sta per qualsiasi numero di qualsiasi carattere. Puoi trovare ulteriori spiegazioni digitando '? Regex'. – Pop

+1

Ah, vedo! Ho pensato * include il significato del '.' già! Bene, ora lo so meglio. grazie ancora! – user969113

4

In alternativa, si può anche provare:

gsub("\\S+_", "", a) 
-4
as.numeric(gsub(pattern=".*_", replacement = '', a) 
[1] 5 7 
+2

Aggiungi sempre una spiegazione alla tua risposta oltre al codice per una migliore comprensione – bigbounty