Thanks for your input and this link. I realize that there was a typo in my example code that impacted the group argument... That's king of stupid.
However, even with the implementation of Felix's syntax, the "Error using packet 1, 'x' is missing" error message is still displayed, even if the call appears correct. So I believe that group argument in not the issue but rather my panel functions. (Plus, Felix's notation creates side-issues such as the calculation of ngroups, which I have hard-coded in the following modified example). require(lattice) mybwplot <- function(x,data,groups){ if (missing(groups)) { ngroups <- 1 } else { ngroups <- 2 } mywidth <- 1/(ngroups+1) mypanel <- function(x,y,groups,...){ if (missing(groups)||is.null(groups)) { panel.bwplot(x,y,...) } else { panel.superpose(x,y,...) } } mypanel.groups <- function(x,y,groups,ngroups,group.number,...){ if (missing(groups)||is.null(groups)){ NULL } else { panel.bwplot(x+(group.number-0.5*(ngroups+1))/(ngroups+1),y, ...) } } ccall <- quote(bwplot(x, data = data, ngroups=ngroups, pch = "|", box.width = mywidth, panel = mypanel, panel.groups = mypanel.groups)) ccall$groups <- substitute(groups) str(ccall) eval(ccall) } myCO2 <- CO2 myCO2$year <- 2011 mybwplot(uptake~Type,myCO2) # works mybwplot(uptake~Type,myCO2,groups=Treatment) # Error using packet 1, 'x' is missing #mybwplot(uptake~Type,myCO2,groups=year) # Error using packet 1, 'x' is missing # Deepayan Sarkar suggested code (adapted to myC02) # bwplot(uptake ~ Type, data = myCO2, groups = Treatment, # pch = "|", box.width = 1/3, # panel = panel.superpose, # panel.groups = function(x, y, ..., group.number) { # panel.bwplot(x + (group.number-1.5)/3, y, ...) # }) On Sat, Aug 20, 2011 at 11:38 AM, Weidong Gu <anopheles...@gmail.com> wrote: > You may want to consult a recent post by Felix > (https://stat.ethz.ch/pipermail/r-help/2011-August/286707.html) on how > to pass group parameter. > > Weidong Gu > > On Sat, Aug 20, 2011 at 6:59 AM, Sébastien Bihorel <pomc...@free.fr> wrote: >> Dear R-users, >> >> A while ago, Deepayan Sarkar suggested some code that uses the group >> argument in bwplot to create some 'side-by-side' boxplots >> (https://stat.ethz.ch/pipermail/r-help/2010-February/230065.html). The >> example he gave was relatively specific and I wanted to generalize his >> approach into a function. Unfortunately, I seem to have some issues >> passing the correct arguments to the panel function, and would greatly >> appreciate any suggestions to solve these issues: >> >> require(lattice) >> >> mybwplot <- function(x,y,data,groups){ >> >> if (missing(groups)||is.null(groups)) { >> groups <- NULL >> ngroups <- 1 >> } else { >> data[[groups]] <- as.factor(data[[groups]]) >> ngroups <- nlevels(data[[groups]]) >> } >> mywidth <- 1/(ngroups+1) >> >> mypanel <- function(x,y,groups,...){ >> if (missing(groups)||is.null(groups)) { >> panel.bwplot(x,y,...) >> } else { >> panel.superpose(x,y,...) >> } >> } >> >> mypanel.groups <- function(x,y,groups,ngroups,...){ >> if (missing(groups)||is.null(groups)){ >> NULL >> } else { >> function(x, y, ..., group.number) { >> panel.bwplot(x+(group.number-0.5*(ngroups+1))/(ngroups+1),y, ...)} >> } >> } >> >> bwplot(formula(paste(y,x,sep=' ~ ')), >> data = data, >> groups = 'Plant', >> ngroups=ngroups, >> pch = "|", >> box.width = mywidth, >> panel = mypanel, >> panel.groups = mypanel.groups) >> >> } >> >> myCO2 <- CO2 >> myCO2$year <- 2011 >> summary(myCO2) >> >> mybwplot('Type','uptake',myCO2) # works >> >> mybwplot('Type','uptake',myCO2,'Treatment') # Error using packet 1, >> 'x' is missing >> >> mybwplot('Type','uptake',myCO2,'year') # Error using packet 1, 'x' is missing >> >> # Deepayan Sarkar suggested code (adapted to myC02) >> # bwplot(uptake ~ Plant, data = myCO2, groups = Treatment, >> # pch = "|", box.width = 1/3, >> # panel = panel.superpose, >> # panel.groups = function(x, y, ..., group.number) { >> # panel.bwplot(x + (group.number-1.5)/3, y, ...) >> # }) >> >> ______________________________________________ >> 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. >> > ______________________________________________ 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.