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.
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 > > [[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.