'format.pval' has a major limitation in its implementation for example
suppose a person had a vector like 'a' and the error being ±0.001.
> a <- c(0.1, 0.3, 0.4, 0.5, 0.3, 0.0001)
> format.pval(a, eps=0.001)
The person wants to have the 'format.pval' output with 2 digits always
showing like this
[1] "0.10" "0.30" "0.40" "0.50" "0.30" "<0.001"
How ever format.pval can only display this
[1] "0.1" "0.3" "0.4" "0.5" "0.3" "<0.001"
If this was the 'format' function this could be corrected by setting the
'nsmall' argument to 2. But 'format.pval' has no ability to pass
arguments to format.
I think that the best solution would be to give 'format.pval' a '...'
argument that would get passed to all the 'format' function calls in
'format.pval'.
I have attached a patch that does this. This patch is against svn
r-release-branch and will also apply to r-devel.
Charles Dupont
--
Charles Dupont Computer System Analyst School of Medicine
Department of Biostatistics Vanderbilt University
Index: src/library/base/R/format.R
===================================================================
--- src/library/base/R/format.R (revision 40768)
+++ src/library/base/R/format.R (working copy)
@@ -43,7 +43,7 @@
}
format.pval <- function(pv, digits = max(1, getOption("digits")-2),
- eps = .Machine$double.eps, na.form = "NA")
+ eps = .Machine$double.eps, na.form = "NA", ...)
{
## Format P values; auxiliary for print.summary.[g]lm(.)
@@ -55,8 +55,8 @@
## be smart -- differ for fixp. and expon. display:
expo <- floor(log10(ifelse(pv > 0, pv, 1e-50)))
fixp <- expo >= -3 | (expo == -4 & digits>1)
- if(any( fixp)) rr[ fixp] <- format(pv[ fixp], dig=digits)
- if(any(!fixp)) rr[!fixp] <- format(pv[!fixp], dig=digits)
+ if(any( fixp)) rr[ fixp] <- format(pv[ fixp], dig=digits, ...)
+ if(any(!fixp)) rr[!fixp] <- format(pv[!fixp], dig=digits, ...)
r[!is0]<- rr
}
if(any(is0)) {
@@ -67,7 +67,7 @@
digits <- max(1, nc - 7)
sep <- if(digits==1 && nc <= 6) "" else " "
} else sep <- if(digits==1) "" else " "
- r[is0] <- paste("<", format(eps, digits=digits), sep = sep)
+ r[is0] <- paste("<", format(eps, digits=digits, ...), sep = sep)
}
if(has.na) { ## rarely
rok <- r
Index: src/library/base/man/format.pval.Rd
===================================================================
--- src/library/base/man/format.pval.Rd (revision 40768)
+++ src/library/base/man/format.pval.Rd (working copy)
@@ -6,13 +6,14 @@
\alias{format.pval}
\usage{
format.pval(pv, digits = max(1, getOption("digits") - 2),
- eps = .Machine$double.eps, na.form = "NA")
+ eps = .Machine$double.eps, na.form = "NA", \dots)
}
\arguments{
\item{pv}{a numeric vector.}
\item{digits}{how many significant digits are to be used.}
\item{eps}{a numerical tolerance: see Details.}
\item{na.form}{character representation of \code{NA}s.}
+ \item{\dots}{arguments passed to the \code{\link{format}} function.}
}
\value{
A character vector.
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel