格式编号为固定宽度,前导零

ahs*_*s85 129 format printf r

以下代码

a <- seq(1,101,25)
b <- paste("name", 1:length(a), sep = "_")
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

"name_1"  "name_26"  "name_51"  "name_76"  "name_101"
Run Code Online (Sandbox Code Playgroud)

我希望所有值的宽度相同,这意味着我可以用这样的零填充值:

"name_001"  "name_026"  "name_051"  "name_076"  "name_101"
Run Code Online (Sandbox Code Playgroud)

我该如何处理?

(这个问题是关系到这一个.)

And*_*rie 216

有几种解决方案.

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

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

另一种是formatCpaste:

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