5

これは簡単な質問ですが、解決策が見つからないことに悩まされ始めています....

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" 
4

3 に答える 3

13

あなたが使用することができますsprintf()

paste0("x", sprintf("%.1f", y), "x")
于 2012-09-03T06:47:28.353 に答える
10

もありますformatC

paste0("x", formatC(y, digits = 1, format = "f"), "x")
于 2012-09-03T07:02:31.493 に答える
7

もありますformatし、drop0trailing

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

そして、本当に(または)ではなく のみ0に置き換えたい場合は、0.01.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')
于 2012-09-03T06:56:25.393 に答える