glm code bug (PR#224)

About this list Date view Thread view Subject view Author view Other groups

Subject: glm code bug (PR#224)
Bill.Venables@cmis.csiro.au
Date: Tue 13 Jul 1999 - 15:13:46 EST


Message-Id: <199907130513.HAA16802@pubhealth.ku.dk>

Peter,

There is a clear and simple bug in glm() that I have noticed in
0.64.2 (Windows and Unix) but may have been present in earlier
versions.

The function starts as follows:

> glm
function (formula, family = gaussian, data = list(), weights = NULL,
    subset = NULL, na.action = na.fail, start = NULL, offset = NULL,
    control = glm.control(...), model = TRUE, method = "glm.fit",
    x = FALSE, y = TRUE, contrasts = NULL, ...)
{
    call <- match.call(expand.dots = FALSE) ### <<<<----------------------------
    ## family
    if (is.character(family))
        family <- get(family)
    if (is.function(family))
        family <- family()
    ## extract x, y, etc from the model formula and frame
    if (is.null(family$family)) {
        print(family)
        stop("`family' not recognized")
    }
    mt <- terms(formula, data = data)
    if (missing(data))
        data <- sys.frame(sys.parent())
    mf <- match.call() ### <<<<----------------------------
    mf$family <- mf$start <- mf$control <- mf$maxit <- NULL
    mf$model <- mf$method <- mf$x <- mf$y <- mf$contrasts <- NULL
    mf$... <- NULL

######

The two marked lines should clearly be

    call <- match.call()

and

    mf <- match.call(expand.dots = FALSE)

The error in the first line can case problems with update() (I
suspect) but the error in the second line does not allow isolated
control arguments (like trace = T) to appear on the main call as
they get passed on to the call to model.frame, causing
pandemonium. As a confirmation of the second change above,
unless you do have (expand.dots = FALSE) the last line quoted
above has no effect.

Regards,
Bill Venables.

-- 
-----------------------------------------------------------------
Bill Venables, Statistician, CMIS Environmetrics Project.

Physical address: Postal address: CSIRO Marine Laboratories, PO Box 120, 233 Middle St, Cleveland, Queensland Cleveland, Qld, 4163 AUSTRALIA AUSTRALIA

Telephone: +61 7 3826 7251 Email: Bill.Venables@cmis.csiro.au Fax: +61 7 3826 7304

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b25 : Tue 04 Jan 2000 - 14:16:05 EST