【问题标题】:r keeping 0.0 when using paste or paste0r 使用 paste 或 paste0 时保持 0.0
【发布时间】:2012-09-03 06:41:01
【问题描述】:

这是一个简单的问题,但它开始让我烦恼,因为我找不到解决方案......

我希望在使用 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" 

【问题讨论】:

  • 你只想要0.0 而不是1.0-1.0
  • @mnel,好问题。我没有在输出中注意到这一点。
  • 抱歉,我也想要 1.0 和 -1.0...但是下面的答案已经解决了我的问题,非常感谢!

标签: r paste digits significant-digits


【解决方案1】:

你可以使用sprintf():

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

【讨论】:

    【解决方案2】:

    还有formatC:

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

    【讨论】:

      【解决方案3】:

      还有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')
      

      【讨论】:

      • 我的 gsub 有点不同:gsub("^0$", "0.0", as.character(y))
      • 干净多了! - 添加到我的答案中
      猜你喜欢
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多