[R] xyplots in lattice - strange behaviour, possible bug?

Bert Gunter gunter.berton at gene.com
Thu Jan 23 00:02:12 CET 2014


Well, if the professor wrote that, it wouldn't have run for him
either! You need to take better notes.

What's going on: You need to distinguish between formal and actual arguments.
?panel.xyplot
tells you that the formal arguments for this function are x,**y** ,...
 (emphasis added) and NOT x,**z**,...

The **actual** argument for y passed to the function will be z. So
change your "z" to a "y" in your function call and it will run:

library(lattice)
x <- rnorm (100)
z <- x + rnorm(100)
f <- gl(2,50,labels =c("Groups 1" , "Groups 2"))
xyplot (z ~ x | f,
        panel = function (x, y, ...) {
          panel.xyplot(x,y, ...)
          panel.abline(h = median(y),
                       lty=2
                       )})


Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Wed, Jan 22, 2014 at 2:10 PM, Manlio Calvi <manlio.calvi at gmail.com> wrote:
> Hello everyone,
>
> I'm very green on R,  I'm following a Coursera course about it when I
> hit a problem when I rewrote the same code the professor use in the
> lecture.
> I'm running Win 7 x64, R 3.0.2 x64 and the last version of Rstudio IDE
>
>  I put up this script:
>
>
> library(lattice)
> x <- rnorm (100)
> z <- x + rnorm(100)
> f <- gl(2,50,labels =c("Groups 1" , "Groups 2"))
> xyplot (z ~ x | f,
>         panel = function (x, z, ...) {
>           panel.xyplot(x,z, ...)
>           panel.abline(h = median(z),
>                        lty=2
>                        )})
>
>
> In my box don't work, it give no error in the terminal, the plotting
> windonw will be opened, the graphbox drawed with all the ticks and the
> titles as intended but instead of the actual data plot inside the
> graph I have this error "Error using packet <x> argment "z" is
> missing, with no default" where <x> is 1 or 2 as the script draw two
> graphs.
>
> I reported this behaviour in the lecture forum and someone replicated it.
>
> I replicated this behaviour even with R alone running the above script
> with the same results.
>
> If I call traceback() no value is given, there is no traceback.
>
> Apparently not everyone could replicate this behaviour for some reason.
>
> As you could see the code must work but didn't.
>
> A similar thing happens if I change the part after the function with
> another like:
>
> ... <same code of above>...
>  panel= function(x,y, ...) {
>           panel.xyplot(x,z, ...)
>           fit <- lm(y~x)
>           panel.abline(fit)
>         })
>
> but don't happens if I call a xyplot without calling a function in it.
>
> Have any ideas?
>
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list