2012-08-02 15 views
17

Tengo dificultades para eliminar la subcadena antes del guión bajo de mi cadena. Quiero usar * (comodín) como el bit antes del guión puede variar:Eliminar el patrón de la cadena con gsub

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

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

El resultado debe ser similar:

> a 
[1] 5 7 

También probé cosas por el estilo "^ * " o " ? "pero realmente no funcionó.

Respuesta

34

El siguiente código funciona en su ejemplo:

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

grandes gracias. Lo que hace el '.' ¿representa? ¿Por qué la estrella "*" (comodín) no funciona por sí misma? ¿No entiendo? – user969113

+4

'.' representa cualquier carácter, por lo que ". *" representa cualquier número de cualquier carácter. Puede encontrar más explicaciones escribiendo '? Regex'. – Pop

+1

¡Ah, ya veo! Pensé que * incluye el significado de '.' ¡ya! Bueno, ahora lo sé mejor. ¡gracias de nuevo! – user969113

4

Alternativamente, también puede probar:

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

Siempre agregue una explicación a su respuesta además del código para una mejor comprensión – bigbounty

Cuestiones relacionadas