2011-11-25 51 views
105

以下代码格式编号为固定宽度,带前导零

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

回答

176

有几种解决方案这一点。其中之一是使用sprintf。这使用嵌入在字符串中的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"