On May 7, 2010, at 5:05 PM, David Winsemius wrote:


On May 7, 2010, at 4:18 PM, Jun Shen wrote:

David,

my.boxplot.stats is modified from boxplot.stats (package grDevices) as follows. x is the original argument, I guess it's the data object for processing. I only added "type". Thanks.

Right, but you should be assigning stats=my.boxplot.stats, not stats=myboxplot.stats(type=6). The functions then pick up their arguments from their environment.


Here's a worked example using modifications of a panel.bwplot help page call:

(bwplot(voice.part ~ height, data = singer, stats=my.boxplot.stats,
       xlab = "Height (inches)",
       panel = function(...) {
           panel.grid(v = -1, h = 0)
           panel.bwplot(..., coef=3, type=1)
       },
       par.settings = list(plot.symbol = list(pch = 4))))

One of the problems I faced was that I really could not see much difference between the results of changing the "type" for quantile. You provided no dataset for which you thought the difference made a .... difference. So I changed the coef argument to create an effect I could see.


(And learn to send plain text. It is very easy to do so in gmail.)

--
David.


Jun

=============================================================
> boxplot.stats

function (x, coef = 1.5, do.conf = TRUE, do.out = TRUE)
{
   if (coef < 0)
       stop("'coef' must not be negative")
   nna <- !is.na(x)
   n <- sum(nna)
   stats <- stats::fivenum(x, na.rm = TRUE)
   iqr <- diff(stats[c(2, 4)])
   if (coef == 0)
       do.out <- FALSE
   else {
       out <- if (!is.na(iqr)) {
           x < (stats[2L] - coef * iqr) | x > (stats[4L] + coef *
               iqr)
       }
       else !is.finite(x)
       if (any(out[nna], na.rm = TRUE))
           stats[c(1, 5)] <- range(x[!out], na.rm = TRUE)
   }
   conf <- if (do.conf)
       stats[3L] + c(-1.58, 1.58) * iqr/sqrt(n)
   list(stats = stats, n = n, conf = conf, out = if (do.out) x[out &
       nna] else numeric(0L))
}
<environment: namespace:grDevices>


On Fri, May 7, 2010 at 3:09 PM, David Winsemius <dwinsem...@comcast.net > wrote:

On May 7, 2010, at 3:30 PM, Jun Shen wrote:

Dear all,

I constructed this function called my.boxplot.stats by replacing fivnum() with quantile() in function boxplot.stats(). So I can try different quantile methods in bwplot(). The problem is I couldn't pass different values to the
"type" argument to my.boxplot.stats, which in turn is an argument in
bwplot(). Now I just have to manually change the "type" value in
my.boxplot.stats. What I would like to do is call bwplot() like

bwplot(CL~DOSE,data=patab,stats=my.boxplot.stats(type=7)),


You have defined a function with an argument of x that does not have a default value, so it throws an error when you call it with no value for x. (It's not complaining about the type argument.)

--
David.


But I got an error:
Error in my.boxplot.stats(type = 7) : element 1 is empty;
the part of the args list of 'is.na' being evaluated was:
(x)

Thanks a lot.

Jun Shen from Millipore Corporation

========================================================
my.boxplot.stats<-function (x, coef = 1.5, *type=6*, do.conf = TRUE, do.out
= TRUE)
{
 if (coef < 0)
     stop("'coef' must not be negative")
 nna <- !is.na(x)
 n <- sum(nna)
 stats <- stats::quantile(x, type=type,na.rm = TRUE)
 iqr <- diff(stats[c(2, 4)])
 if (coef == 0)
     do.out <- FALSE
 else {
     out <- if (!is.na(iqr)) {
         x < (stats[2L] - coef * iqr) | x > (stats[4L] + coef *
             iqr)
     }
     else !is.finite(x)
     if (any(out[nna], na.rm = TRUE))
         stats[c(1, 5)] <- range(x[!out], na.rm = TRUE)
 }
 conf <- if (do.conf)
     stats[3L] + c(-1.58, 1.58) * iqr/sqrt(n)
 list(stats = stats, n = n, conf = conf, out = if (do.out) x[out &
     nna] else numeric(0L))
}

      [[alternative HTML version deleted]]

______________________________________________
R-help@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.

David Winsemius, MD
West Hartford, CT



David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to