On Jun 20, 2011, at 10:49 AM, 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.

All reasonable comments. I would offer in my defense (but of only the second suggestion) the documentation of the lattice-object:

http://finzi.psych.upenn.edu/R/library/lattice/html/trellis.object.html

... which does suggest that one can rely on $condlevel being a designed named component of a lattice-object.

The strip.default and strip.custom functions access a variable in the environment of the lattice object creation named "var.name" but I do not see of a method to access its values without using the "<<-" construction .... generally thought to violate "good practice".

--
David

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

David Winsemius, MD
West Hartford, CT

______________________________________________
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.

Reply via email to