当使用paste或paste0时,保持0.0

时间:2012-09-03 06:41:02

标签: r paste digits significant-digits

这是一个简单的问题,但是我开始惹恼我,我找不到解决方案......

我希望能够在使用paste或paste0时将它作为输出保留0.0,所以如果我有以下内容:

y <- c(-1.5,-1.0,-0.5,0.0,0.5,1.0,1.5)
> y
[1] -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5
paste0("x",y,"x")

我明白了:

[1] "x-1.5x" "x-1x"   "x-0.5x" "x0x"    "x0.5x"  "x1x"    "x1.5x" 

但希望:

[1] "x-1.5x" "x-1.0x"   "x-0.5x" "x0.0x"    "x0.5x"  "x1.0x"    "x1.5x" 

3 个答案:

答案 0 :(得分:13)

您可以使用sprintf()

paste0("x", sprintf("%.1f", y), "x")

答案 1 :(得分:10)

还有formatC

paste0("x", formatC(y, digits = 1, format = "f"), "x")

答案 2 :(得分:7)

还有formatdrop0trailing

paste0('x',format(y,drop0Trailing = F),'x')

并且,如果您真的只想用0替换0.0,而不是1.0-1.0) 然后

paste0('x',gsub(x = gsub(x = format(y, drop0trailing = T),'0$', '0.0'),' ',''),'x')
## [1] "x-1.5x" "x-1x"   "x-0.5x" "x0.0x"  "x0.5x"  "x1x"    "x1.5x" 

或者,正如@mrdwab建议的那样(并且不那么典型)

paste0('x',gsub("^0$", "0.0", as.character(y)),'x')