[R] mysterious rounding digits output

Ted Harding ted@h@rd|ng @end|ng |rom w|@ndre@@net
Thu May 31 09:46:27 CEST 2018


Thanks Martin! Good to know that you have made this important
change, And, regarding
  Maybe we should additionally say that this is *not* round()ing,
  and give a link to the help for signif() ?
I think that also would be most useful. In fact, ?signif
leads to a whole survey of "Rounding of Numbers", covering the
functions ceiling(), floor(), trunc(), round(), signif().
Well worth reading!
Best wishes,
Ted.

On Thu, 2018-05-31 at 08:58 +0200, Martin Maechler wrote:
> >>>>> 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