Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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 - Fatal编程技术网

使用R替换字符串中的数值

使用R替换字符串中的数值,r,R,我想用DM*13:01:01:01替换DM*13:01:01。但是,我的脚本也将DM*11:01:01:01,DM*03:01:01,DM*01:01:01更改为DM*13:01:01:01。我不想改变这些 我使用的脚本: > papST$DM_c1 <-gsub("[DM*]\\d[13][:]\\d[01][:]\\d[01][:]\\d[02]", "*13:01:01:01", papST$DM_o1, perl = TRUE) >papST$DM_c1根据您给出的示例,您

我想用
DM*13:01:01:01
替换
DM*13:01:01
。但是,我的脚本也将
DM*11:01:01:01,DM*03:01:01,DM*01:01:01
更改为
DM*13:01:01:01
。我不想改变这些

我使用的脚本:

> papST$DM_c1 <-gsub("[DM*]\\d[13][:]\\d[01][:]\\d[01][:]\\d[02]", "*13:01:01:01", papST$DM_o1, perl = TRUE)

>papST$DM_c1根据您给出的示例,您实际上不需要使用任何奇特的正则表达式功能来执行您提到的特定替换。模式中唯一需要包含的是反斜杠,这样
*
就不会被视为特殊字符:

x = c("DM*13:01:01:02", "DM*11:01:01:01", "DM*03:01:01:01", "DM*01:01:01:01")
gsub("DM\\*13:01:01:02", "DM*13:01:01:01", x)
如果有更多的值需要替换,比如您希望替换以
02
结尾的所有值,那么您可能需要在正则表达式中引入一些“模式匹配”功能,但不要过于复杂

作为参考,要替换字符串末尾的所有
02
s,您可以使用使用
$
的简单正则表达式,该正则表达式在字符串末尾匹配:

gsub("02$", "01", x)

您应该尝试将您的正则表达式输入一个助手工具,如。您的正则表达式包含很多对我来说没有意义的东西,特别是如果您基本上是在尝试匹配单个固定字符串。
\\d
表示任何数字<代码>[xy]
匹配任何字符
x
y
。所以
\\d[13]
匹配01,03,11,13,21,23。。。。等等为什么不干脆
gsub(“DM*13:01:01:02”,“DM*13:01:01”,papST$DM_o1,fixed=TRUE)
?谢谢你,我的问题是我试图将一个相对简单的替换过度复杂化。一个简单的脚本很好用,我以后会记住这一点。非常感谢。