首页 > 解决方案 > 在 R 和正则表达式中添加前面的“+”号

问题描述

我有正数或负数。它们可以在小数点后有一位或两位数。我要求的格式是小数点后一位,除非有两位有效数字。负数需要一个减号。理想情况下是真正的减号 (UTF 2212),而不是连字符、短划线或短划线。正数需要加号。不会出现零。

所以

x <- c(-1, -1.1, -1.23, 0.1, 1, 1.23)

变成

x <- c(−1.0, −1.1, −1.23, +0.1, +1.0, +1.23)

早些时候,我问了一个没有 +/- 符号信息和 UTF 2212 详细信息的类似问题,并收到了来自 @Abdessabour Mtktop 的回答:

sub("(?<=\\.\\d)0$", "", format(x, digits = 3), perl = T)

这使:

"-1.0" "-1.1" "-1.23" " 0.1" " 1.0" " 1.23"

如何在正数前面出现的空格中获得“+”号?

标签: rregex

解决方案


我不太确定您在寻找什么,但这是否有效?

formatC(x, flag = "+",format = "f", digits = 2)
[1] "-1.00" "-1.10" "-1.23" "+0.10" "+1.00" "+1.23"

获得与您一样的准确结果:

sub("0$",'',formatC(x, flag = "+",format = "f", digits = 2))
[1] "-1.0"  "-1.1"  "-1.23" "+0.1"  "+1.0"  "+1.23"

推荐阅读