在r中以不同方式替换字符串中的多个符号

时间:2018-08-14 16:30:56

标签: r regex string gsub

我尝试使用gsub将(5,10](20,20]等值重新编码为5-10%20-20%。因此,第一个括号应消失,逗号应改为破折号,而最后一个括号应为%。我只能做的是

x<-c("(5,10]","(20,20]")
gsub("\\,","-",x)

然后将逗号更改为破折号。我也该如何更改其他人?

谢谢。

4 个答案:

答案 0 :(得分:4)

非常简单,一组gsub。

x <- c("(5,10]","(20,20]")
x <- gsub(",", "-", x) # remove comma
x <- gsub("\\(", "", x) # remove bracket
x <- gsub("]", "%", x) # replace ] by %
x
 "5-10%"  "20-20%"

答案 1 :(得分:3)

这是另一种选择:

> gsub("\\((\\d+),(\\d+)\\]", "\\1-\\2%", x)
[1] "5-10%"  "20-20%"

答案 2 :(得分:1)

其他解决方案。

使用if %mm% == 00 set "mm=12" & set /a "yy-=1"提取所有数字。然后,我们将每个第一个和第二个数字相结合。

regmatches

答案 3 :(得分:1)

有趣的是,丑陋的一线:

sapply(regmatches(x, gregexpr("\\d+", x)), function(x) paste0(x[1], "-", x[2], "%"))

[1] "5-10%"  "20-20%"