zemlys at gmail.com
2009-Jun-30 07:20 UTC
[Rd] bug in nlme package function predict.lmList (PR#13788)
Full_Name: Vaidotas Zemlys Version: 2.9.0 OS: Ubuntu 8.10 Submission from: (NULL) (213.197.173.50) Steps to reproduce the bug: library(nlme) data(Oxboys) qm=lmList(height~age|Subject,data=Oxboys) grid=with(Oxboys,expand.grid(age=seq(min(age),max(age),length=50),Subject=levels(Subject))) res <- predict(qm,grid,se=TRUE) Erreur dans if (pool) { : l'argument est de longueur nulle res <- predict(qm,grid,se=TRUE,pool=TRUE) Erreur dans sprintf(gettext(fmt, domain = domain), ...) : objet 'form' introuvable The result: predicting does not work, when new data is supplied. The problem is in the function predict.lmList. When argument newdata is not NULL, argument subset is set to TRUE, and following code gets executed: ####Start of the relevant code snippet if (!is.null(subset)) { if (any(is.na(match(subset, names(object))))) { stop("Non-existent group requested in \"subset\".") } oclass <- class(object) oatt <- attr(object, "call") object <- object[subset] attr(object, "call") <- oatt class(object) <- oclass if (is.null(newdata)) { myData <- myData[subset] } } #####End of relevant code snippet Only attribute call is saved from original object, but the following code assumes that attributes groupsForm and pool are present, and when they are not found, error is produced. The problem with missing pool attribute can be worked arround by supplying it directly. But it is not possible to do that with attribute groupsForm. The patch which fixes this problem : --- lmList.R 2008-02-11 16:05:14.000000000 +0200 +++ lmListnew.R 2009-06-30 09:49:21.000000000 +0300 @@ -853,9 +853,10 @@ predict.lmList <- stop("Non-existent group requested in \"subset\".") } oclass <- class(object) - oatt <- attr(object, "call") + oatt <- attributes(object)[c("call","groupsForm","pool")] object <- object[subset] - attr(object, "call") <- oatt + oatt <- c(attributes(object),oatt) + attributes(object) <- oatt class(object) <- oclass if(is.null(newdata)) { myData <- myData[subset] I did not do extensive tests, but it works with previous example and my own datasets. Here is the relevant information about R and nlme on my system:> R.version_ platform i486-pc-linux-gnu arch i486 os linux-gnu system i486, linux-gnu status major 2 minor 9.0 year 2009 month 04 day 17 svn rev 48333 language R version.string R version 2.9.0 (2009-04-17)> packageDescription("nlme")Package: nlme Version: 3.1-92 Date: 2009-05-22 Priority: recommended Title: Linear and Nonlinear Mixed Effects Models Author: Jose Pinheiro <Jose.Pinheiro at pharma.novartis.com>, Douglas Bates <bates at stat.wisc.edu>, Saikat DebRoy <saikat at stat.wisc.edu>, Deepayan Sarkar <Deepayan.Sarkar at R-project.org>, the R Core team. Maintainer: R-core <R-core at R-project.org> Description: Fit and compare Gaussian linear and nonlinear mixed-effects models. Depends: graphics, stats, R (>= 2.4.0) Imports: lattice LazyLoad: yes LazyData: yes License: GPL (>= 2) Packaged: 2009-05-23 16:39:47 UTC; ripley Repository: CRAN Date/Publication: 2009-05-24 08:46:01 Built: R 2.9.0; i486-pc-linux-gnu; 2009-06-30 06:00:47 UTC; unix I did update.packages() before testing and reporting the bug. I hope that this is correct place to report bug on package of R. Vaidotas Zemlys
Apparently Analagous Threads
- [R ] Query : problems with the arithmetic operator "^" with function "lme" and "lmList"
- [R ] Query : problems with the arithmetic operator "^" wi th function "lme" and "lmList"
- shared-mime-info (PR#8278)
- Problems with Sweave and pdf.options(encoding="ISOLatin7") (PR#13234)
- r-cran-rjava dependencies on debian jesse, library(rJava) fails when default-jre is missing