[R] 'format' problem

David Brahm brahm at alum.mit.edu
Mon Aug 4 17:48:29 CEST 2003

Timur Elzhov <Timur.Elzhov at jinr.ru> wrote:
> format(1234567, digits = 2)
>   [1] "1234567"
> but I'd like the last number to be represented as "1.2e+06" string too.

R chooses "1234567" instead of "1.2e+06" because it has fewer or equal number
of characters (equal in this case).

In R-devel (which will become R-1.8.0, as I understand it), an options(scipen)
has been added which penalizes scientific notation by an additional number of
characters.  In your case, a negative penalty would do the trick:

  R-devel> options(scipen=-9)
  R-devel> format(1234567, digits = 2)
           [1] "1.2e+06"

However, unless you feel like compiling a development version or waiting
until 1.8.0, Andrew C. Ward's <s195404 at student.uq.edu.au> suggestion is
probably the simpler way to go:
  Ward> sprintf("%.1e", 1234567)
                              -- David Brahm (brahm at alum.mit.edu)

More information about the R-help mailing list