2013-02-27 77 views
0

我有一个我正在尝试处理的字符串的向量,但我无法摆脱一些奇怪的字符。R摆脱单引号字符

当我看到我用下面的行csv文件:

train <- read.csv(file="files/file1.csv", header = T, encoding = "UTF-8") 

我用这条线,试图摆脱标点符号:

train$var1 <- gsub("[[:punct:]]", " ", train$var1) 

但是在检查运行它后,我仍然看到奇怪的单引号,'...'和黑点像密码遮掩字符。这里的输入:

dput(unique(unlist(var1List))[c(30242:30246, 30561, 30484)]) 
c("opportunity…", "about…", "expected…", "reward…", "us…", "‘as", 
"<U+25CF>") 

任何建议摆脱这些字符?

+0

如何删除除允许字符的“白名单”之外的所有内容?你能定义这样的白名单吗? – 2013-02-27 16:38:38

+0

我该怎么做? – screechOwl 2013-02-27 16:39:18

+1

在'as'中打勾是重音而不是报价。你也有椭圆形的字符,而不是三个句点。 'gsub('[^ A-z0-9]','',x)'只会保留字母和数字,但是会丢失最后一个字符串中的Unicode代表。 – Justin 2013-02-27 16:40:39

回答

5

你可以卸下一切的除了一套法律特征:

train$var1 <- gsub("[^\\w\\s]", " ", train$var1, perl = TRUE) 

会改变每一个字符,这不是一个字母或一个空白字符到一个空间,例如。

+0

我不认为这是一个有效的R正则表达式。 '\ w'是无法识别的。 (即使使用grep = T) – agstudy 2013-02-27 16:54:37

+1

修改为使用R的特定正则表达式语法。 – joran 2013-02-27 16:59:01

+0

@joran:谢谢,我一直忘记双反斜杠 - 但是'perl = TRUE'真的有必要吗? – 2013-02-27 17:01:57