2011-11-25 13 views
105

następujący kodliczba Format jako stałej szerokości, z zerami wiodącymi

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

produkuje ten wyjściowe:

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

chciałbym mieć taką samą szerokość wszystkich wartości, co oznacza dla mnie wypełnij wartości zerami takimi jak to:

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

Jak sobie z tym poradzić?

(To pytanie jest związane z this one).

Odpowiedz

176

Istnieje kilka rozwiązań tego.

Jednym z nich jest użycie sprintf. Wykorzystuje on kody formatowania stylu osadzone w łańcuchu znaków, aby wskazać format wszelkich innych przekazywanych do niego argumentów. Na przykład, kod formatowania %3d oznacza Formatuje liczbę, całkowitą o szerokości 3:

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

Innym jest formatC i paste:

paste("name", formatC(a, width=3, flag="0"), sep="_") 
[1] "name_001" "name_026" "name_051" "name_076" "name_101" 
Powiązane problemy