# [R] Controlling the precision of the digits printed

Kevin Burton rkevinburton at charter.net
Tue Nov 15 18:08:06 CET 2011

```Thank you. I mainly didn't know about the vector/matrix printing rules.

Kevin

-----Original Message-----
From: William Dunlap [mailto:wdunlap at tibco.com]
Sent: Tuesday, November 15, 2011 10:43 AM
To: Kevin Burton; r-help at r-project.org
Subject: RE: [R] Controlling the precision of the digits printed

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