2012-05-24 55 views
9

DadoEn R, cómo usar regex [: punct:] en gsub?

test<-"Low-Decarie, Etienne" 

deseo de reemplazar toda puntuacion con el espacio

gsub(pattern="[:punct:]", x=test, replacement=" ") 

pero esto produce

"Low-De arie, E ie e" 

donde se sustituye ninguna puntuacion y al parecer se eliminan letras al azar (aunque pueden estar asociado con la puntuación como t para tab y n para la siguiente línea).

+9

'patrón = "[[: punct:]]"?' ... – kohske

+6

la sección de ejemplos de 'gsub' da ejemplos de la respuesta proporcionada @kohske . Y las letras eliminadas no son aleatorias; están en el conjunto de {p, u, n, c, t ,:}. –

Respuesta

18

Compañero usuario de MontReal aquí.

Varias opciones, resultados sames.

En R base, justo el doble de los soportes

gsub(pattern="[[:punct:]]", test, replacement=" ") 

[1] "Low Decarie Etienne" 

paquete stringr tiene la función str_replace_all que hace eso.

library(stringr) 
str_replace_all(test, "[[:punct:]]", " ") 

Otra opción es dejar sólo letras

str_replace_all(test, "[^[:alnum:]]", " ") 
Cuestiones relacionadas