【问题标题】:increment leading zero in R [duplicate]在R中增加前导零[重复]
【发布时间】:2012-10-24 04:26:46
【问题描述】:

可能重复:
Format number as fixed width, with leading zeros
sprintf use without gsub

这可能以前做过,但我找不到 R 的线程。

如何在 R 中增加前导零?

例如,有一个名为 x 的 向量,其元素为:0001、0002、0003....9999

【问题讨论】:

标签: r


【解决方案1】:

使用sprintf:

sprintf("%04s", as.character(1:20))
[1] "0001" "0002" "0003" "0004" "0005" "0006" "0007" "0008" "0009" "0010" "0011" "0012" "0013" "0014" "0015" "0016"
[17] "0017" "0018" "0019" "0020"

在 Windows 上,我可以找到一个 Rhelp 帖子,上面说您可以成功

head( sprintf("%04d", 1:999)  )
[1] "0001" "0002" "0003" "0004" "0005" "0006"

【讨论】:

  • 哎呀,我想我完全误解了这个问题。
  • 这是我之前在 Rhelp 上不止一次回答过的问题。我每次都必须查看我之前的答案。我一直认为它应该是“%0000s”
  • 嗨 DWin,我试过你的答案,但它对我不起作用code> nums = sprintf("%04s", as.character(1:9999)); head(nums) [1] " 1" " 2" " 3" " 4" " 5" " 6"code 没有前导零,只有空格
  • 啊,那你一定是在不同的操作系统上(而不是我在 Mac 上)。 sprintf 函数调用系统设施。我得到了预测结果:tail( sprintf("%04s", as.character(1:999)) ) [1] "0994" "0995" "0996" "0997" "0998" "0999"
【解决方案2】:

如果元素都是4位数字,那么正则表达式可以做到:

gsub("0(\\d{3})","1\\1",x)

更笼统地说:

gsub("^0(\\d*)$","1\\1",x)

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2017-03-11
    • 2014-03-04
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多