gsub/regex:删除因子变量中开始和结束的特殊字符

gsub/regex: deleting begining and end special characters in a factor variable

我正在使用以下矢量:

vec <- c("[0.81, 1]", "0.00 - 0.03", "0.04 - 0.27",  "0.28 - 0.5",  "0.51 - 0.8")

我有兴趣修改值"[0.81, 1]"中的值使其对应格式数字-数字

工作解决方案

目前我通过以下方式解决这个要求:

vec <- gsub("\[", "", vec, perl = TRUE)
vec <- gsub("\]", "", vec, perl = TRUE)
vec <- gsub(",", " - ", vec, fixed = TRUE)

代码产生所需的要求:

> vec
[1] "0.81 -  1"   "0.00 - 0.03" "0.04 - 0.27" "0.28 - 0.5"  "0.51 - 0.8" 

问题

我想使用更复杂的 gsub 和更花哨的 regex 来实现我的解决方案。我想提出 regex 语法:

原则上我想实现减少 gsub 调用的次数。


尝试次数

我试过类似的东西:


我想达到的目标:

  1. 将前两个 gsub 个调用合并为一个
  2. 如果可能,将所有 3 个调用合并为一个

像这样使用捕获组:

sub("\[(.*), (.*)\]", "\1 - \2", vec)
## [1] "0.81 - 1"    "0.00 - 0.03" "0.04 - 0.27" "0.28 - 0.5"  "0.51 - 0.8"

这是所用正则表达式的可视化:

\[(.*), (.*)\]

Debuggex Demo

这不是一个正则表达式,也许正则专家会给出一个,但我将你的前两个调用与第二个调用组合在一个 oneliner 中:

v1 <- gsub("\[|\]","",gsub(","," -",vec))

请注意,我替换为“-”,而不是“-”,因为您的逗号后已经有空格。