使用R中的正则表达式更改数字格式

时间:2013-10-18 19:15:57

标签: regex r

在数据框dfc1中,负数值的格式如下:

  

(1,000,000)

我想从df$c1中的负值中删除括号,以便返回:

  

-1,000,000

我在R中使用以下命令:df$c1<-gsub('^\\($','-',gsub(',','',df$c1))

但输出没有返回所需的效果。

如何在此R命令中调整正则表达式以返回正确的格式?

2 个答案:

答案 0 :(得分:2)

gsub("\\((.+)\\)", "-\\1", "(1,000,000)")
# [1] "-1,000,000"

答案 1 :(得分:1)

不会是:

df$c1<-sub('^\\(', '-' , sub('\\)$','',df$c1))

这将删除前导左箭头,用减号替换它们,并删除尾随右箭头。你的版本坚持认为'外部'模式正好是(,我怀疑它会匹配任何项目,并使用'内部'调用删除逗号。我改为sub,因为每个元素只需要做一次。