12

给定

test<-"Low-Decarie, Etienne"

我希望用空格替换所有标点符号

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

但这会产生

"Low-De arie, E ie  e"

其中没有标点符号被替换,并且显然随机字母被删除(尽管它们可能与标点符号相关联,例如 t 代表制表符,n 代表下一行)。

4

1 回答 1

24

MontReal 用户在这里。

几个选项,相同的结果。

在 R Base 中,只需将括号加倍

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

[1] "Low Decarie  Etienne"

stringr具有执行此操作的功能str_replace_all

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

或者只保留字母

str_replace_all(test, "[^[:alnum:]]", " ")
于 2012-05-24T14:42:58.473 回答