# [R] adding to Trellis plots

Deepayan Sarkar deepayan at stat.wisc.edu
Thu Aug 14 06:49:16 CEST 2003

```On Wednesday 13 August 2003 07:43, Brunschwig, Hadassa {PDMM~Basel} wrote:
> Hello everyone
>
> I have data grouped by subjects and i used the trellis plot to show the
> curve for each subject. I have another vector "a" which gives me the
> highest points the curves for each subjects can achieve ( the curve is
> exponential ). Now i want to draw a horizontal line, whose values are saved
> in "a", on each plot for each subject. Is there any possibility to do that?
> Obviously i should use something like panel.abline, the problem is how i
> can inform R that each value in "a" is a horizontal line for each plot.

Some more clarification on your data structure would have helped. Is your
variable "a" a part of the data frame (with the same value repeated for all
rows corresponding to each subject), or is it a separate, shorter vector,
with length equal to the number of subjects ?

If the former, then you should use subscripts, as others have already
suggested, perhaps as:

xyplot(y ~ x | subject,  data = foo,
panel = function(x, y, subscripts, ...) {
panel.xyplot(x, y, ...)
panel.abline(h=foo\$a[subscripts], ...)
})

In the second case, you could do something similar to determine (inside the
panel function) which element of "a" you need to use (assuming the grouping
variable "subject" is a factor):

panel.abline(h = a[as.numeric(foo\$subject)[subscripts]], ...)

(assuming that the grouping variable "subject" is a factor)

Alternatively, you could probably also get away with

xyplot(y ~ x | subject, data = foo,
panel = function(x, y, panel.number, ...) {
panel.xyplot(x, y, ...)
panel.abline(h=a[panel.number], ...)
})

Deepayan

```