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

Bert Gunter gunter.berton at gene.com
Thu Jan 23 00:16:36 CET 2014


... and I should have added (more complexity!) that the formula method
of xyplot parses the formula and passes down what's on the left hand
side of "~" to the "y" argument of the panel function.

And if all else fails, read the docs! -- in this case for ?xyplot --
where it explicitly says:

"... A panel function appropriate for the functions described here
would usually expect arguments named x and y, which would be provided
by the conditioning process...."

And please oh please do not suggest as a newbie that your confusion is
due to "bugs" in long used and extensively tested R code. That just
seems arrogant to me ("I didn't get it so the software must be
buggy").

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 3:02 PM, Bert Gunter <bgunter at gene.com> wrote:
> 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