Thanks very much Bert and David. I was looking for an approach that would use objects that are active while the panel function was being executed. Perhaps which.packet is the best way to go, e.g. if using y ~ x | a*b, fetch levels(b)[which.packet()[2]] from the environment in which b is defined.
Frank Bert Gunter wrote: > > Hi all: > > Thanks, David. This is a good example of knowledgeable "R forensic > investigation." I leave it to Frank whether it meets his criteria. > > However, I would argue that that this is bad practice and quite > unwise. In general, these details are implementation dependent and > could change. Yes, they are exposed, but only because everything is in > R. The more desirable and safer way to do things would be to use > accessor functions. I believe Frank's question was to ask whether such > accessor functions exist. If they do not, then of course one is stuck > with writing one based on details like thoseyou have elucidated. But > this is really not good programming practice, imo. > > Contrary and more informed views welcome. > > Cheers, > Bert > > On Mon, Jun 20, 2011 at 7:17 AM, David Winsemius > <dwinsem...@comcast.net> wrote: >> >> Frank Harrell wrote: >>> >>> I know about the current.row, current.column, and panel.number functions >>> that are useful within panel functions written for lattice. Are there >>> easy ways to obtain the names of the conditioning variables (those >>> appearing after |) and their values for the current panel? >>> Thanks >>> Frank >>> >> >> Using one of the examples in help(xyplot): >> >> states <- data.frame(state.x77, >> state.name = dimnames(state.x77)[[1]], >> state.region = state.region) >> testp <- xyplot(Murder ~ Population | state.region, data = states, >> groups = state.name, >> panel = function(x, y, subscripts, groups) { >> ltext(x = x, y = y, labels = groups[subscripts], cex=1, >> fontfamily = "HersheySans") >> }) >> str(testp) >> >> I see that the names of the state.regions are in an attribute of >> testp$packet.sizes, so: >> >>> attr(testp$packet.sizes, "dimnames")[["state.region"]][4] >> #[1] "West" >> >> #Looking for a further example in help(xyplot with 2 "panel dimensions" I >> tried: >> >>> testp2 <- dotplot(variety ~ yield | year * site, data=barley) >> >> #I'm not quite sure how the "rows" and "columns" are defined , but I get: >> >>> attr(testp2$packet.sizes, "dimnames")[[1]][2] >> [1] "1931" >>> attr(testp2$packet.sizes, "dimnames")[[2]][1] >> [1] "Grand Rapids" >> >> I'm not sure this is the "right answer" because after looking further, I >> now >> see a list node entitled $condlevels which returns the same information >> is a >> much more straightforward fashion: >> >>> testp2 $ condlevels >> $year >> [1] "1932" "1931" >> >> $site >> [1] "Grand Rapids" "Duluth" "University Farm" "Morris" >> [5] "Crookston" "Waseca" >> >> (And other nodes that contain information about conditioning levels: >> $ index.cond :List of 2 >> ..$ : int [1:2] 1 2 >> ..$ : int [1:6] 1 2 3 4 5 6 >> $ perm.cond : int [1:2] 1 2 >> $ condlevels :List of 2 >> ..$ year: chr [1:2] "1932" "1931" >> ..$ site: chr [1:6] "Grand Rapids" "Duluth" "University Farm" "Morris" >> ... >> >> HTH; >> >> David. >> >> -- >> View this message in context: >> http://r.789695.n4.nabble.com/Accessor-functions-in-lattice-graphics-tp3609435p3611509.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> 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. >> > > > > -- > "Men by nature long to get on to the ultimate truths, and will often > be impatient with elementary studies or fight shy of them. If it were > possible to reach the ultimate truths without the elementary studies > usually prefixed to them, these would not be preparatory studies but > superfluous diversions." > > -- Maimonides (1135-1204) > > Bert Gunter > Genentech Nonclinical Biostatistics > > ______________________________________________ > 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. > ----- Frank Harrell Department of Biostatistics, Vanderbilt University -- View this message in context: http://r.789695.n4.nabble.com/Accessor-functions-in-lattice-graphics-tp3609435p3611701.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.