From Martin Maechler <maechler@stat.math.ethz.ch>  Fri Feb 27 14:39:20 1998
From: Martin Maechler <maechler@stat.math.ethz.ch> (Martin Maechler)
Date: Fri, 27 Feb 1998 15:39:20 +0100
Subject: R-beta: quantile
In-Reply-To: <x2ra4p6w4z.fsf@blueberry.kubism.ku.dk> (message from Peter
 Dalgaard BSA on 27 Feb 1998 13:59:55 +0100)
Message-ID: <199802271439.PAA14045@sophie.ethz.ch>

>>>>> "PD" == Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk> writes:

    PD> Martyn Plummer <plummer@iarc.fr> writes:
    >> What about just using format(100*probs)?
    >> 
    R> foo <- function(probs) paste(format(100 * probs), "%", sep="")
    R> foo(c(0.02,0.25,0.50))
    >> [1] " 2%" "25%" "50%"
    R> foo(c(0.025,0.25,0.50))
    >> [1] " 2.5%" "25.0%" "50.0%"
    R> foo(c(0.0125,0.25,0.50))
    >> [1] " 1.25%" "25.00%" "50.00%"
    >> 
    >> I am probably missing something but this seems to be "smart" enough.


    PD> I can do one better, I think:

    >> sapply(c(0.1,2.5,25),format)
    PD> [1] "0.1" "2.5" "25"
    >> foo <- function(probs) paste(sapply(100 * probs,format), "%",
    >> sep="") foo(c(0.02,0.25,0.50))
    PD> [1] "2%" "25%" "50%"
    >> foo(c(0.025,0.25,0.50))
    PD> [1] "2.5%" "25%" "50%"
    >> foo(c(0.0125,0.25,0.50))
    PD> [1] "1.25%" "25%" "50%"

Yes, this is better;
but it actually ``the same'' as  formatC !

[TEACHER:]
   One of the main differences between format(.) and formatC(.)
   is that  format(.) formats a vector into a  COMMON format
   (hence the "50.00%" in Martyn's answer)
   whereas  formatC(.) formats each element INDIVIDUALLY
which is what Peter proposed by
	 sapply(...., format)

formatC however runs the loop in C code rather than interpreted language,
hence my original proposals :

MM> Some untested proposals for replacement of
MM>         round(100 * probs)
MM> 
MM> 1)  formatC(100*probs, dig=3,                            format='f')
MM> 2)  formatC(100*probs, dig= max(3, .Options$digits - 3), format='f')
MM> 3)  signif(100*probs,       max(3, .Options$digits - 3))
MM> 
MM> or then replace  "max(3, .Options$digits - 3)"
MM> by the new argument  'digits.names'
MM> and have that one default to
MM>         digits.names = max(3, .Options$digits - 3)

which should be corrected...
to something like

	formatC(100 * probs, dig= max(3, .Options$digits), wid=3)

[which is marginally better than Peter's solution...
 HOWEVER, when tested with funny .Options$digits,
 triggered a bug in formatC(.) ....  which I am going to fix now.....
]

- Martin
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


R-beta: quantile
Martin Maechler