我试图找出导致我出问题的字符串向量中的特殊字符是什么。
一个特殊的例子是一个看起来像“-coliform”的字符串,这是我矢量中的第一个条目。
但这不是它实际上说的,因为我得到以下内容:
>"-coliform" == vect[1]
[1] FALSE
所以很明显“ - ”实际上并不是正确的符号。这会导致问题,因为我需要从字符串中删除所有标点符号,但有些标点字符不会被识别为标点符号。
如何确定我实际展示的角色,以便将其删除?
我不确定它是否是编码问题。看来这个角色是UTF-8,我通过以下方式找到了它:
>weird_char <- substr(vect[1], 1, 1)
>encoding(weird_char)
[1] "UTF-8"
编辑:根据其他用户的请求添加某事物给出的输出。
>dput(vect[1])
"–coliform"
为了澄清,还有其他特殊字符也未被识别为标点符号(尽管它们看起来像是)。因此,替换破折号的所有实例将无法解决问题。
答案 0 :(得分:2)
如果您想尝试找出字符是什么,可以使用unicode包
library(unicode)
as.u_char_seq("–coliform", "")
[1] <U+0096,U+0063,U+006F,U+006C,U+0069,U+0066,U+006F,U+0072,U+006D>
<U+0096>
看起来像是转换为“保护区开始”的控制代码
如果您有许多未知字符并且只想保留字母数字,则可以使用
gsub("[^[:alnum:] ]", "", "–coliform")
[1] "coliform"
或者您确实要保留一些标点符号或其他字符,您可以使用管道|
gsub("[^[:alnum:]|? ]", "", "–coliform?") #keep question mark
[1] "coliform?"
答案 1 :(得分:1)
您可以尝试gsub
gsub('-', '', '-coliform')
即使您有多个
gsub('-|\\^|\\%', '', '-co%li^form')
如果你有一个colmun
x = c('-co%li^form', '-total_coliform')
gsub('-|\\^|\\%|\\_', '', x)
列出string
中的字符,并将其与|\\