[R] Numeric formatting question

Marc Schwartz marc_schwartz at me.com
Tue Nov 10 14:31:14 CET 2009


On Nov 10, 2009, at 7:23 AM, Michael Pearmain wrote:

> Hi All,
>
> I have am using Sweave and the \Sexpr{} to place some numeric  
> variables in
> my tex document. I want to format the number prior to entry so they  
> read
> slightly more elegantly.
> Say i have the following numbers
> x <- 0.00487324
> y <- 0.000000432
> z <- 0.567
>
> I would like to have the numbers displayed as follows
>
> x1 <- 0.0049
> y1 <- 0.00000043
> z1 <- 0.57
>
> I've seen i can use sprintf("%.3f", pi) for example to get the  
> formating
> after the decimal place, but i can't figure out an elegant way to  
> find the
> position of the first non-zero entry to allow me to substitute this  
> value
> into the sprintf command.
>
> Can anyone offer any advise?
>
> Thanks in advance
>
> Mike


It looks like you want the numbers formatted to 2 significant digits,  
rather than to a fixed number of decimal places. Thus, use:

 > format(x, digits = 2, scientific = FALSE)
[1] "0.0049"

 > format(y, digits = 2, scientific = FALSE)
[1] "0.00000043"

 > format(z, digits = 2, scientific = FALSE)
[1] "0.57"


See ?format and note the 'digits' and 'scientific' arguments.

HTH,

Marc Schwartz




More information about the R-help mailing list