Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从数据帧中删除特殊字符_R_Regex_Gsub_Non Printing Characters - Fatal编程技术网

R 从数据帧中删除特殊字符

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

我有一个矩阵,其中包含字符串“能量每”�m”。 在“m”之前是一个菱形符号,上面有一个问号——我不知道它是什么

我试图通过在矩阵的列上使用以下内容来消除它:

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')