[R] Controlling the precision of the digits printed

William Dunlap wdunlap at tibco.com
Tue Nov 15 17:43:21 CET 2011


When you print a vector R uses a single
format for the whole vector and tries to
come up with one format that displays all the values
accurately enough.  For a matrix (or data.frame)
it uses a different format for each column, so perhaps
you would like the output of:

  > matrix(a, nrow=1, dimnames=list("", names(a)))
       A B C D   E    F
   1e-10 1 2 3 0.5 0.25

Now you said you wanted a minimum of 4 digits after
the decimal point for "large fractions" like 0.25
but only 2 when using scientific notation for "small
fractions" like 1.0e-10 and you didn't say what you
wanted for big numbers like pi*10^10.  That rule seems
complicated enough that you may want to write your
own print function based on sprintf().

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Kevin Burton
> Sent: Tuesday, November 15, 2011 8:19 AM
> To: r-help at r-project.org
> Subject: [R] Controlling the precision of the digits printed
> 
> Has anyone come across the right combinations to print a limited number of
> digits? My trial and error approach is taking too much time. Here is what I
> have tried:
> 
> 
> 
> > op <- options()
> 
> > a <- c(1e-10,1,2,3,.5,.25)
> 
> > names(a) <- c("A", "B", "C", "D", "E", "F")
> 
> > # default
> 
> > a
> 
>       A       B       C       D       E       F
> 
> 1.0e-10 1.0e+00 2.0e+00 3.0e+00 5.0e-01 2.5e-01
> 
> > options(digits = 4, scipen=5)
> 
> > # Doesn't print exponents but there are too many trailing digits
> 
> > a
> 
>            A            B            C            D            E
> F
> 
> 0.0000000001 1.0000000000 2.0000000000 3.0000000000 0.5000000000
> 0.2500000000
> 
> 
> 
> > options(digits = 3, scipen=4)
> 
> > # Now we are back to exponents
> 
> > a
> 
>       A       B       C       D       E       F
> 
> 1.0e-10 1.0e+00 2.0e+00 3.0e+00 5.0e-01 2.5e-01
> 
> 
> 
> I would like the integers to print as integers (1,2,3). The larger fractions
> to print something like .5000 or .2500. And the very small number to use
> exponents (1.0e-10)
> 
> 
> 
> Is this possible?
> 
> 
> 
> Thank you.
> 
> 
> 
> Kevin
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.



More information about the R-help mailing list