1

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

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

3 回答 3

6

我相信我以前回答过一次,但找不到。你不能告诉sprintf()et al 关于删除前导零的格式......所以你必须自己做,例如通过substring()

R> val <- 0.006
R> aa <- substring(sprintf("%4.3f", val), 2)
R> aa
[1] ".006"
R> 
于 2012-11-12T23:55:01.477 回答
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"
于 2017-10-03T01:01:47.637 回答
1

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

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

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

于 2012-11-13T00:01:39.243 回答