Номер формата как фиксированная ширина, с ведущими нулями

Следующий код

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"

Как мне это обработать?

(Этот вопрос связан с этим.)

Ответ 1

Существует несколько решений.

Один из них - использовать 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"