Hello R-helpers, I have a problem with formatting a single number to show leading zeros. For example, I want "2" displayed as "002". My numbers have 1 to 3 digits and I would like them all to display 3 digits for printing. I know I could use "paste" in a loop with several "if"s, but I was wondering if there is a single function that can do this. I have tried "format", "prettyNum" and "formatC" back and forth, but these functions don't seem to be able to display leading zeros. Please help. -- Michal J. Figurski
?sprintf> x <- c(1,10,11,100) > sprintf("%03d", x)[1] "001" "010" "011" "100" On Fri, Oct 17, 2008 at 1:55 PM, Michal Figurski <figurski at mail.med.upenn.edu> wrote:> Hello R-helpers, > > I have a problem with formatting a single number to show leading zeros. For > example, I want "2" displayed as "002". > > My numbers have 1 to 3 digits and I would like them all to display 3 digits > for printing. I know I could use "paste" in a loop with several "if"s, but I > was wondering if there is a single function that can do this. > > I have tried "format", "prettyNum" and "formatC" back and forth, but these > functions don't seem to be able to display leading zeros. Please help. > > > -- > Michal J. Figurski > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
sprintf("%03d", 2)
formatC(2, width=3, flag="0")
both give
[1] "002"
On Fri, 17 Oct 2008, Michal Figurski wrote:
> Hello R-helpers,
>
> I have a problem with formatting a single number to show leading zeros. For
> example, I want "2" displayed as "002".
I hope you meant that you want 2, not "2", so displayed. Otherwise
you
need as.numeric("2") here.
> My numbers have 1 to 3 digits and I would like them all to display 3 digits
> for printing. I know I could use "paste" in a loop with several
"if"s, but I
> was wondering if there is a single function that can do this.
>
> I have tried "format", "prettyNum" and
"formatC" back and forth, but these
> functions don't seem to be able to display leading zeros. Please help.
You will find studying the help more productive than 'tried ... back and
forth'.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595