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? 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