我有个位数的数字。它们可能在小数点后有0、1或2位。
我希望至少显示一个小数位。因此:
2显示为2.0
如果有一个小数位,则显示它,但不要添加额外的零。所以:
2.1显示为2.1
如果有两位小数,请同时显示:
2.45显示为2.45
给定x <- c(1.8, 1.55, 1.5, 1)
,我应该获取(1.8, 1.55, 1.5, 1.0)
使用sprintf
或format
是否可以做到这一点
发布于 2020-10-28 01:32:01
这可以通过将format
与sub
相结合来实现
> x <- c(1.8, 1.55, 1.5, 1, 1.23445, 100, -1)
# the pattern (?<=\\.\\d)0$ checks if the last number after . is a zero if so replace with nothing
> sub("(?<=\\.\\d)0$", "", format(x, digits=3), perl=T )
[1] " 1.8" " 1.55" " 1.5" " 1.0" " 1.23" "100.0" " -1.0"
> sub("(^ *)(?=\\d)", "\\1+", sub("(?<=\\.\\d)0$", "", format(x, digits=3), perl=T ), perl=T)
[1] " +1.8" " +1.55" " +1.5" " +1.0" " +1.23" "+100.0" " -1.0"
https://stackoverflow.com/questions/64565165
复制相似问题