Think about it. I shall assume that you are familiar with S3 methods. What do you think would happen when xyplot code calls is.numeric() on a factor object expecting it to call the is.numeric primitive but, instead, finding a factor method defined, calls that? Note that your factor method has no arguments, but the is.numeric() primitive does. Hence when the code calls the primitive on the factor object, the error you saw is thrown.
I would say that this is a weakness of the informal S3 "class" system, although you probably should not have been surprised that is.numeric is called on factors as the "x" argument, so you were inviting trouble by defining a factor method that overrides this behavior. Nevertheless, I would argue that one cannot know in general when this occurs for other S3 classes, and that therefore allowing methods for is.numeric() is dangerous. Of course, full qualification in the original xyplot code (base::is.numeric() rather than is.numeric() ) would avoid such things, but that's a drag. Contrary opinions and corrections to any flawed understanding on my part are welcome, of course. Cheers, Bert Bert Gunter "Data is not information. Information is not knowledge. And knowledge is certainly not wisdom." -- Clifford Stoll On Sun, Nov 15, 2015 at 6:22 PM, sbihorel <sebastien.biho...@cognigencorp.com> wrote: > Hi, > > Pretty much everything is in the title of the post. An example is below. > > library(lattice) > data <- > data.frame(x=rep(1:10,8),y=rnorm(80),trt=factor(rep(1:4,each=20)),groups=rep(1:8,each=10)) > xyplot <- xyplot(y~x|trt,data,groups=groups) > > is.numeric.factor <- function(){ > print('hello world') > } > > xyplot <- xyplot(y~x|trt,data,groups=groups) > > Thanks for shedding some light on this. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.