web-dev-qa-db-fra.com

Mettre en forme le numéro en largeur fixe, avec les zéros au début

Le code suivant

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

produit cette sortie:

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

Je voudrais avoir la même largeur de toutes les valeurs, ce qui signifie pour moi de remplir les valeurs avec des zéros comme ceci:

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

Comment puis-je gérer ça?

(Cette question est liée à celle-ci .)

124
ahs85

Il y a plusieurs solutions à cela.

L'un d'eux consiste à utiliser sprintf. Ceci utilise les codes de formatage de style C incorporés dans une chaîne de caractères pour indiquer le format des autres arguments qui lui sont transmis. Par exemple, le code de formatage %3d signifie formater un nombre en entier de largeur 3:

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

Un autre est formatC et paste:

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