2011-07-10 21 views
17

He estado usando gsub("toreplace","replacement", myvector) para limpiar datos en R. Si bien esto funciona para comas y similares, eliminar "$" no tiene ningún efecto. Entonces si hago gsub("$","",myvector) todos los signos de dólar permanecen en su lugar.

Creo que esto es porque $ es un personaje especial en R. Intenté escapar de él "\$" pero eso produce el mismo resultado (sin efecto). Y no pude encontrar un recurso en el escape de caracteres especiales en R.

Obviamente, debería hacer esto en el preprocesamiento. Pero me preguntaba si alguien por ahí sabía cómo a) escapar de los caracteres especiales en R b) deshacerse de molesto $ en R directamente. Para la ciencia.

Respuesta

11

caracteres que se escapan pueden ser un dolor algunas veces, pero sólo poner entre corchetes (que sea una clase de caracteres) ayuda con esto:

> gsub("[$]","",c("$100","ta$ty")) 
[1] "100" "taty" 
25

Tienes que escapar de ella dos veces, primero para R, segundo para la expresión regular

gsub('\\$', '', c("a$a", "bb$")) 
[1] "aa" "bb" 

Ver ?Quotes para obtener detalles sobre cotización y escapar.

13

Uso fixed = TRUE:

gsub('$', '', c("a$a", "bb$"), fixed = TRUE) 

entonces usted no tiene que preocuparse por ningún carácter especial. En stringr, esto se implementa un poco diferente:

library(stringr) 
str_replace_all(c("$100","ta$ty"), fixed("$"), "") 

Gracias a DiggyF y James para los ejemplos!

+0

Sabía que debería haber leído? Gsub con más cuidado. ¡Gracias! – araneae

Cuestiones relacionadas