On 7/11/07, Stephen Tucker <[EMAIL PROTECTED]> wrote: > In the Trellis approach, another way (I like) to deal with multiple pieces of > external data sources is to 'attach' them to panel functions through lexical > closures. For instance... > > rectInfo <- > list(matrix(runif(4), 2, 2), > matrix(runif(4), 2, 2), > matrix(runif(4), 2, 2)) > > panel.qrect <- function(rect.info) { > function(x, y, ...) { > ri <- rect.info[[packet.number()]] > panel.rect(ri[1, 1], ri[1, 2], ri[2, 1], ri[2, 2], > col = "grey86", border = NA) > panel.xyplot(x, y, ...) > } > } > > xyplot(runif(30) ~ runif(30) | gl(3, 10), > panel = panel.qrect(rectInfo)) > > ...which may or may not be more convenient than passing rectInfo (and perhaps > other objects if desired) explicitly as an argument to xyplot().
That's an interesting approach. I think the important thing is to make sure that the data required to reproduce the plot is available as part of the trellis object (e.g. if you save it and load it in another session (not that anyone actually ever does that, but it's the principle of the thing)). This happens transparently if you supply the external data as arguments to xyplot(). It happens in your example too, but the data is hidden inside the environment of the panel function. The two approaches might differ in terms of memory use, but I'm not sure. -Deepayan ______________________________________________ R-help@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.