Duncan Murdoch <[EMAIL PROTECTED]> writes: > On 4/26/2007 7:39 PM, Deepayan Sarkar wrote: >> Hi, >> >> I recently discovered this buglet in lattice: If lattice is _not_ >> attached, I get >> >>> lattice::dotplot(~1:10) >> Error in eval(expr, envir, enclos) : could not find function "bwplot" >> >> This happens because of this: >> >>> lattice:::dotplot.formula >> function (x, data = NULL, panel = "panel.dotplot", ...) >> { >> ocall <- ccall <- match.call() >> ccall$data <- data >> ccall$panel <- panel >> ccall[[1]] <- as.name("bwplot") >> ans <- eval.parent(ccall) >> ans$call <- ocall >> ans >> } >> <environment: namespace:lattice> >> >> That is, ccall is eval()-ed in the global environment where bwplot is >> not visible. While this example is somewhat silly, similar things >> happen when I try to import lattice from another package. >> >> Are there any simple alternatives? I tried >> >> ccall[[1]] <- as.name("lattice::bwplot") >> >> but that didn't work either. > > One way would be to create a new environment with the caller's > environment as the parent, and put a copy of bwplot in it, i.e. > something like the following untested code: > > function (x, data = NULL, panel = "panel.dotplot", ...) > { > ocall <- ccall <- match.call() > ccall$data <- data > ccall$panel <- panel > ccall[[1]] <- as.name("bwplot") > evalenv <- new.env(parent = parent.frame()) > assign("bwplot", bwplot, envir=evalenv) > ans <- eval(ccall, envir=evalenv) > ans$call <- ocall > ans > } >
quote(lattice::bwplot) also seems to work. + seth -- Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center http://bioconductor.org ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel