-----Oprindelig meddelelse-----
Fra: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] P?? vegne af Sebastian Luque
Sendt: 21. februar 2006 08:20
Til: r-help at stat.math.ethz.ch
Emne: [R] indexing within panels in xyplot
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
In addition: Warning message:
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.
Thanks,
--
Sebastian P. Luque