Wolfram Fischer
2006-Dec-08 09:52 UTC
[R] lattice: defining an own function using args for "formula" and "groups"
x.fun <- function( formula, data ) dotplot( formula, data ) x.grp <- function( formula, groups, data ) dotplot( formula, groups, data ) data( barley )> x.fun( variety ~ yield | site, data=barley )# no problem> dotplot( variety ~ yield | site, groups=year, data=barley )# no problem> x.grp( variety ~ yield | site, groups=year, data=barley )object "year" not found # that's my error, so I do:> x.grp( variety ~ yield | site, groups=barley$year, data=barley )Error in eval(expr, envir, enclos) : numeric 'envir' arg not of length one> traceback()9: eval(substitute(groups), data, environment(formula)) 8: bwplot.formula(x = formula, data = c(2, 2, 2, 2, 2, 2, 2, 2, ... Why it is a problem calling x.grp() and no problem calling x.fun() ? What could I do to get work x.grp() ? Thanks - Wolfram
Gabor Grothendieck
2006-Dec-08 12:07 UTC
[R] lattice: defining an own function using args for "formula" and "groups"
Don't know of a more straight forward way but this works. It constructs a new call to bwplot from the one to x.grp2 and evaluates it in the parent environment: library(lattice) x.grp2 <- function(x, groups, data) { cl <- match.call() cl[[1]] <- as.name("bwplot") eval.parent(cl) } x.grp2( variety ~ yield | site, year, barley ) On 12/8/06, Wolfram Fischer <wolfram at fischer-zim.ch> wrote:> > x.fun <- function( formula, data ) dotplot( formula, data ) > x.grp <- function( formula, groups, data ) dotplot( formula, groups, data ) > > data( barley ) > > > x.fun( variety ~ yield | site, data=barley ) > # no problem > > > dotplot( variety ~ yield | site, groups=year, data=barley ) > # no problem > > > x.grp( variety ~ yield | site, groups=year, data=barley ) > object "year" not found # that's my error, so I do: > > > x.grp( variety ~ yield | site, groups=barley$year, data=barley ) > Error in eval(expr, envir, enclos) : numeric 'envir' arg not of length one > > > traceback() > 9: eval(substitute(groups), data, environment(formula)) > 8: bwplot.formula(x = formula, data = c(2, 2, 2, 2, 2, 2, 2, 2, ... > > Why it is a problem calling x.grp() and no problem calling x.fun() ? > What could I do to get work x.grp() ? > > Thanks - Wolfram > > ______________________________________________ > R-help at stat.math.ethz.ch 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. >