Ric*_*ton 164
您需要使用正则表达式来标识不需要的字符.对于最容易阅读的代码,您需要str_replace_all来自stringr包,但是gsub从基础R也可以.
确切的正则表达式取决于您要做的事情.你可以删除你在问题中给出的那些特定字符,但删除所有标点符号要容易得多.
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
Run Code Online (Sandbox Code Playgroud)
(基本R等价物是gsub("[[:punct:]]", " ", x).)
另一种方法是换出所有非字母数字字符.
str_replace_all(x, "[^[:alnum:]]", " ")
Run Code Online (Sandbox Code Playgroud)
请注意,根据您的区域设置,构成字母或数字或标点符号的定义略有不同,因此您可能需要进行一些实验以获得您想要的内容.
Fel*_*nga 22
而不是使用正则表达式来删除那些"疯狂"的字符,只需将它们转换为ASCII,这将删除重音,但将保留字母.
编辑:正如在评论中记得的那样,可能需要声明原始字符串的起始编码,通常它将是 UTF-8
astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
Run Code Online (Sandbox Code Playgroud)
结果
[1] "Abcdeacoauu"
Run Code Online (Sandbox Code Playgroud)
小智 6
将特殊字符转换为撇号,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
Run Code Online (Sandbox Code Playgroud)
在下面的代码中删除多余的撇号
Data <- gsub("''","" , Data ,ignore.case = TRUE)
Run Code Online (Sandbox Code Playgroud)
使用gsub(..)功能将特殊字符替换为撇号