2011-11-25 23 views
105

el siguiente códigonúmero de formato ancho fijo como, con ceros a la izquierda

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

produce esta salida:

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

me gustaría tener el mismo ancho de todos los valores que significa para mí llene los valores con ceros como este:

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

¿Cómo manejo eso?

(Esta pregunta se relaciona con this one.)

Respuesta

176

Hay varias soluciones a este.

Una de ellas es usar sprintf. Utiliza códigos de formato de estilo C incrustados en una cadena de caracteres para indicar el formato de cualquier otro argumento que se le pase. Por ejemplo, el código de formato %3d significa formato de un número como número entero de la anchura de 3:

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

Otra es formatC y paste:

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