# Re: [R] indexing within panels in xyplot

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Wed 22 Feb 2006 - 03:06:46 EST

On 2/21/06, Sebastian Luque <spluque@gmail.com> wrote:
> Dear R-helpers,
>
> I need to show a linear fit through a subset of the data within each
> combination of levels of two factors. So I prepared an xyplot with
> different panels for each level of one of the factors, and different
> symbols within each panel for the levels of the second factor. My problem
> is selecting the subset of each combination through which the line should
> be fit for subsequent plotting. This hopefully shows the idea:
>
>
> ---<---------------cut here---------------start-------------->---
> toydf <- expand.grid(1:100, c("A", "B"),
> c("pop1", "pop2", "pop3", "pop4", "pop5"))
> toydf <- data.frame(facA = toydf[[3]], facB = toydf[[2]],
> x = toydf[[1]], y = rnorm(1000))
>
> xyplot(y ~ x | facA, groups = facB, data = toydf,
> panel.groups = function(x, y, subscripts, ...) {
> panel.xyplot(x, y, ...)
> lindx <- which(y[subscripts] == max(y[subscripts], na.rm = TRUE))
> xleft <- mean(x[lindx], na.rm = TRUE)
> fit <- lm(y[x >= xleft] ~ x[x >= xleft])
> panel.abline(fit)
> })
> ---<---------------cut here---------------end---------------->---
>
> i.e. the left limit for fitting the line is defined by the mean of x
> values where y is equal to the maximum y values, *within* each combination
> of levels of both factors. The above is giving me:
>
> Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
> 0 (non-NA) cases
> no finite arguments to max; returning -Inf
>
> which shows I'm not understanding how the 'subscripts' argument works.
> I'd appreciate some pointers on what I'm doing wrong, as I haven't been
> able to find help in the help pages and List archives.

panel.xyplot(x, y, ...)

Deepayan

R-help@stat.math.ethz.ch mailing list