On Jun 6, 2011, at 17:15 , Joris Meys wrote: > Hi all, > > I noticed some very odd behaviour in the termplot function of the > stats package due to the following lines : > > 18. if (is.null(data)) > 19. data <- eval(model$call$data, envir) > > This one will look in the global environment, and renders the two > lines after this > > 20. if (is.null(data)) > 21. data <- mf > > completely obsolete. If nothing is found, an error is returned. If > anything is found, data won't be NULL, so line 20, when reached, will > always return FALSE. Can it be that lines 18 and 19 should be removed > from the function?
I think this is a false assumption. What keeps model$call$data from being NULL? No comments on the remainder, except that it wouldn't be the first time a wrapper function got into trouble with environments and modelling functions... > > This gives especially problems when called from other plot functions > on models made with wrapper functions. One example : > > Data <- data.frame( > x1=rnorm(100), > x2=rnorm(100,3,2), > y=rnorm(100) > ) > form <- as.formula(y~x1+x2) > test <- lm(form, data=Data) > termplot(test) > > wrapper <- function(ff,x){ > tt <- lm(ff,data=x) > } > test2 <- wrapper(form,Data) > termplot(test2) > > For the non-smooth terms, termplot is called. In the first example, > this works perfectly well. In the second example, it either returns "x > not found" (when there is no x variable in the global) or "x2 not > found" when there is an x variable. > > If both lines mentioned earlier are erased from the function, it works > as expected in this example code. Using the model frame seems the > logic choice here, I have no clue why one would want to look in the > global environment for the data related to a model. > > Cheers > Joris > > -- > Joris Meys > Statistical consultant > > Ghent University > Faculty of Bioscience Engineering > Department of Applied mathematics, biometrics and process control > > tel : +32 9 264 59 87 > joris.m...@ugent.be > ------------------------------- > Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Peter Dalgaard Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel