R 从数据帧中删除特殊字符
我有一个矩阵,其中包含字符串“能量每”�m”。 在“m”之前是一个菱形符号,上面有一个问号——我不知道它是什么 我试图通过在矩阵的列上使用以下内容来消除它:R 从数据帧中删除特殊字符,r,regex,gsub,non-printing-characters,R,Regex,Gsub,Non Printing Characters,我有一个矩阵,其中包含字符串“能量每”�m”。 在“m”之前是一个菱形符号,上面有一个问号——我不知道它是什么 我试图通过在矩阵的列上使用以下内容来消除它: a=gsub('Energy per �m','',a) [并对gsub的第一项使用复制/粘贴],但它不起作用。[“a=rep(5,能量/每”]中出现意外符号。当我尝试使用grepl从原始矩阵中提取某些内容时,我得到: 46: In grepl("ref. value", raw$parameter) : input string 15
a=gsub('Energy per �m','',a)
[并对gsub的第一项使用复制/粘贴],但它不起作用。[“a=rep(5,能量/每”]中出现意外符号。当我尝试使用grepl从原始矩阵中提取某些内容时,我得到:
46: In grepl("ref. value", raw$parameter) :
input string 15318 is invalid in this locale
我怎样才能去掉所有这类符号呢?我只想要0-9、A-Z、A-Z和。其余的都可以去掉。可能有比使用正则表达式更好的方法(例如,通过更改
编码)
但以下是您的正则表达式解决方案:
gsub("[^0-9A-Za-z///' ]", "", a)
[1] "Energy per m"
但是,正如@JoshuaUlrich所指出的,你最好使用:
gsub("[^[:alnum:]///' ]", "", x)
[1] "Energy per m"
[^[:alnum:]
比[^0-9A-Za-z]
更可取。对于后者,?regex
说“因为它们的解释依赖于语言环境和实现,所以最好避免它们。”并且“例如,[:alnum:]
意味着[0-9A-Za-z]
,但后者取决于区域设置和字符编码,而前者独立于区域设置和字符集。“谢谢。我只是因为在软件包中使用了您的第一个解决方案才知道这一点。”-)谢谢!安德里,结果我需要更多的角色,比如.,()-?还有空间。扩展正则表达式或将其替换为[:alnum:]或[:print:]会产生奇怪的结果。最简单的解决方案确实是通过iconv使用编码。这只有在将列从因子转换为字符后才起作用。啊…啊,罪魁祸首是“欧元”标志。设置错误的编码会破坏参数。Latin1只留下一个空白。#删除不可打印的字符raw$parameter=as.character(raw$parameter);原始$parameter=iconv(原始$parameter,'Latin-9')