以下代码
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"
我该如何处理?
(此问题与this one有关。)
答案 0 :(得分:208)
有几种解决方案。
其中一个是使用sprintf
。这使用嵌入在字符串中的C
样式格式代码来指示传递给它的任何其他参数的格式。例如,格式代码%3d
表示将数字格式化为宽度为3的整数:
a <- seq(1,101,25)
sprintf("name_%03d", a)
[1] "name_001" "name_026" "name_051" "name_076" "name_101"
另一个是formatC
和paste
:
paste("name", formatC(a, width=3, flag="0"), sep="_")
[1] "name_001" "name_026" "name_051" "name_076" "name_101"