格式数字,不带前导零

时间:2012-11-12 23:48:49

标签: r

格式化数字的最佳方法是什么,以便它不显示前导零。例如:

test = .006
sprintf/format/formatC( ??? )  # should result in ".006"

3 个答案:

答案 0 :(得分:6)

我相信我曾经回答过这个问题,但是找不到它。你不能告诉sprintf()等关于丢弃前导零的格式......所以你必须自己做,例如通过substring()

R> val <- 0.006
R> aa <- substring(sprintf("%4.3f", val), 2)
R> aa
[1] ".006"
R> 

答案 1 :(得分:2)

f <- function(x) gsub("^(\\s*[+|-]?)0\\.", "\\1.", as.character(x))
f(0.006)
# ".006"
f(-0.006)
# "-.006"
f("+0.006")
# "+.006"
f(" 0.006")
# " .006"
f(10.05)
# "10.05"

答案 2 :(得分:1)

您可以随时使用正则表达式搜索和替换来修复它:

library(stringr)
test = .006
str_replace(as.character(test), "^0\\.", ".")

不是最优雅的答案,但它确实有效。使用您首选的浮点格式替换as.character所需的任何字符串转换,例如sprintf