2012-05-24 18 views
9

BiorącW R, jak korzystać z regex [: punct:] w gsub?

test<-"Low-Decarie, Etienne" 

pragnę zastąpić wszystkie znaki interpunkcyjne z miejsca

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

ale produkuje

"Low-De arie, E ie e" 

gdzie nie interpunkcyjny otrzymuje i pozornie losowe litery są usuwane (chociaż mogą one być związane z punktacją jako t dla tab i n dla następnej linii).

+9

wzór '= "[[: punct:]]"?' ... – kohske

+6

Sekcja Przykłady 'gsub' podaje przykłady @kohske odpowiedzi udzielonej . A usunięte litery nie są przypadkowe; są w zbiorze {p, u, n, c, t ,:}. –

Odpowiedz

18

Członek użytkownika MontReal tutaj.

Kilka opcji, wyniki samouczków.

w R bazy, wystarczy dwukrotnie wsporniki

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

[1] "Low Decarie Etienne" 

opakowania stringr posiada funkcję str_replace_all że robi.

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

lub zachować tylko litery

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