[R] mysterious rounding digits output

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Thu May 31 08:58:07 CEST 2018


>>>>> Ted Harding 
>>>>>     on Thu, 31 May 2018 07:10:32 +0100 writes:

    > Well pointed out, Jim!

    > It is infortunate that the documentation for options(digits=...)
    > does not mention that these are *significant digits* 
    > and not *decimal places* (which is what Joshua seems to want):

Since R 3.4.0  the help on  ?options  *does* say significant!

The change in R's source code was this one,  14 months ago :
------------------------------------------------------------------------
r72380 | maechler | 2017-03-21 11:28:13 +0100 (Tue, 21. Mar 2017) | 2 Zeilen
GeƤnderte Pfade:
   M /trunk/src/library/base/man/options.Rd

digits: + "signficant"
------------------------------------------------------------------------

and since then, the text has been

     ‘digits’: controls the number of significant digits to print when
          printing numeric values.  It is a suggestion only.
	  .......

whereas what you (Ted) cite is from R 3.3.x and earlier

 > "‘digits’: controls the number of digits to print when
 > printing numeric values."

Maybe we should additionally say that this is *not* round()ing,
and give a link to the help for signif() ?


    > On the face of it, printing the value "0,517" of 'ccc' looks
    > like printing 4 digits! Joshua's could look even worse if 'ddd'
    > had values in the 1000s!

    > To achieve exactly what Joshua seems to want, use the round()
    > function. Starting with his original assignment of values to
    > the variable itemInfo, the result of round(itemInfo,digits=3) is:

    > aaa   bbb   ccc   ddd    eee
    > skill     1.396 6.225 0.517 5.775  2.497
    > predict   1.326 5.230 0.462 5.116 -2.673
    > waiting   1.117 4.948    NA    NA     NA
    > complex   1.237 4.170 0.220 4.713  5.642
    > novelty   1.054 4.005 0.442 4.260  2.076
    > creative  1.031 3.561 0.362 3.689  2.549
    > evaluated 0.963 3.013    NA    NA     NA
    > body      0.748 2.238 0.596 2.019  0.466
    > control   0.620 2.149    NA    NA     NA
    > stakes    0.541 1.905 0.227 2.020  2.343
    > spont     0.496 1.620    NA    NA     NA
    > chatter   0.460 1.563 0.361 1.382  0.540
    > present   0.428 1.236 0.215 1.804  2.194
    > reward    0.402 1.101 0.288 1.208  0.890
    > feedback  0.283 0.662    NA    NA     NA
    > goal      0.237 0.474    NA    NA     NA

    > Best wishes to all,
    > Ted.


    > On Thu, 2018-05-31 at 15:30 +1000, Jim Lemon wrote:
    >> Hi Joshua,
    >> Because there are no values in column ddd less than 1.
    >> 
    >> itemInfo[3,"ddd"]<-0.3645372
    >> itemInfo
    >> aaa   bbb   ccc   ddd    eee
    >> skill     1.396 6.225 0.517 5.775  2.497
    >> predict   1.326 5.230 0.462 5.116 -2.673
    >> waiting   1.117 4.948    NA 0.365     NA
    >> complex   1.237 4.170 0.220 4.713  5.642
    >> novelty   1.054 4.005 0.442 4.260  2.076
    >> creative  1.031 3.561 0.362 3.689  2.549
    >> evaluated 0.963 3.013    NA    NA     NA
    >> body      0.748 2.238 0.596 2.019  0.466
    >> control   0.620 2.149    NA    NA     NA
    >> stakes    0.541 1.905 0.227 2.020  2.343
    >> spont     0.496 1.620    NA    NA     NA
    >> chatter   0.460 1.563 0.361 1.382  0.540
    >> present   0.428 1.236 0.215 1.804  2.194
    >> reward    0.402 1.101 0.288 1.208  0.890
    >> feedback  0.283 0.662    NA    NA     NA
    >> goal      0.237 0.474    NA    NA     NA
    >> 
    >> digits specifies the number of significant digits ("It is a suggestion
    >> only"), so when at least one number is padded with a leading zero it
    >> affects the formatting of the other numbers in that column. I suspect
    >> that this is an esthetic consideration to line up the decimal points.
    >> 
    >> Jim
    >> 
    >> 
    >> On Thu, May 31, 2018 at 11:18 AM, Joshua N Pritikin <jpritikin using pobox.com> wrote:
    >> > R version 3.5.0 (2018-04-23) -- "Joy in Playing"
    >> > Platform: x86_64-pc-linux-gnu (64-bit)
    >> >
    >> > options(digits=3)
    >> >
    >> > itemInfo <- structure(list("aaa" = c(1.39633732316667, 1.32598263816667,  1.11658324066667, 1.23651072616667, 1.05368679983333, 1.03100737383333,  0.9630728395, 0.7483865045, 0.620086646166667, 0.5411017985,  0.496397607833333, 0.459528044666667, 0.427877047833333, 0.402085979666667,  0.283161181233333, 0.236896277233333), "bbb" = c(6.22533860696667,  5.229736804, 4.94816041772833, 4.17020503255333, 4.00453781427167,  3.56058007398333, 3.0125202404, 2.23782358733333, 2.14863910661167,  1.90460903044777, 1.62001089796667, 1.56341257968151, 1.23618558850667,  1.10086688908262, 0.661981500639833, 0.47397754310745), "ccc" = c(0.5165911355,  0.462204707666667, NA, 0.219635924333333, 0.441863780833333,  0.361502865833333, NA, 0.596137946666667, NA, 0.226984771566667,  NA, 0.360922661583333, 0.2145347068, 0.287756249483333, NA, NA ), "ddd" = c(5.77538400186667,  5.115877113, NA, 4.71294520316667, 4.25952652129833, 3.68879921863167,  NA, 2.01942456211145, NA, 2.02032557108, NA, 1.381810875
    >> 9571,  1.80436759778167, 1.20789851993367, NA, NA), "eee" = c(2.49725347166667,  -2.67340172316667, NA, 5.64195206333333, 2.07633555233333, 2.548949539,  NA, 0.465537272243167, NA, 2.34255027516667, NA, 0.5400824922975,  2.1935000655, 0.890007976866667, NA, NA)), row.names = c("skill",  "predict", "waiting", "complex", "novelty", "creative", "evaluated",  "body", "control", "stakes", "spont", "chatter", "present", "reward",  "feedback", "goal"), class = "data.frame")
    >> >
    >> > itemInfo  # examine column ddd
    >> >
    >> > When I try this, column ddd has 1 fewer digits than expected. See the
    >> > attached screenshot.
    >> >
    >> > Why don't all the columns have the same number of digits displayed?
    >> >
    >> > --
    >> > Joshua N. Pritikin, Ph.D.
    >> > Virginia Institute for Psychiatric and Behavioral Genetics
    >> > Virginia Commonwealth University
    >> > PO Box 980126
    >> > 800 E Leigh St, Biotech One, Suite 1-133
    >> > Richmond, VA 23219
    >> > http://exuberant-island.surge.sh
    >> >
    >> > ______________________________________________
    >> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
    >> > 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.
    >> >
    >> 
    >> ______________________________________________
    >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
    >> 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.

    > ______________________________________________
    > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
    > 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