2011-11-25 16 views
105

il seguente codicenumero Formato come larghezza fissa, con zeri

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

produce questo risultato:

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

Vorrei avere la stessa larghezza di tutti i valori che significa per me riempire i valori con zeri come questo:

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

Come gestirlo?

(Questa domanda è legata alla this one.)

risposta

176

Ci sono diverse soluzioni a questo.

Uno di questi è quello di utilizzare sprintf. Questo utilizza i codici di formattazione dello stile C incorporati in una stringa di caratteri per indicare il formato di qualsiasi altro argomento passato ad esso. Ad esempio, il codice di formattazione %3d significa formato un numero come numero intero di larghezza 3:

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

altro è formatC e paste:

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