格式化数字的最佳方法是什么,以便它不显示前导零。例如:
test = .006
sprintf/format/formatC( ??? ) # should result in ".006"
答案 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
。