格式化数字为固定宽度,前导零

下面的代码

a <- seq(1,101,25) b <- paste("name", 1:length(a), sep = "_") 

产生这个输出:

 "name_1" "name_26" "name_51" "name_76" "name_101" 

我想要所有值的宽度相同,这意味着我要用这样的零填充值:

 "name_001" "name_026" "name_051" "name_076" "name_101" 

我该如何处理?

(这个问题和这个有关。)

有几个解决scheme。

其中之一是使用sprintf 。 这使用embedded在string中的C风格格式代码来指示传递给它的任何其他参数的格式。 例如,格式化代码%3d表示将数字格式化为宽度为3的整数:

 a <- seq(1,101,25) sprintf("name_%03d", a) [1] "name_001" "name_026" "name_051" "name_076" "name_101" 

另一个是formatCpaste

 paste("name", formatC(a, width=3, flag="0"), sep="_") [1] "name_001" "name_026" "name_051" "name_076" "name_101"