[R] Use of expand.model.frame()

John Fox jfox at mcmaster.ca
Sat Jan 1 15:12:08 CET 2005


Dear list members,

I've encountered a problem using expand.model.frame() with a model specified
without an explicit data argument. To illustrate (R 2.0.1 under Windows XP):

    > x <- rnorm(10)
    > y <- x + rnorm(10)
    > mod <- lm(y ~ x)
    > z <- 1:10
    > expand.model.frame(mod, "z")
    Error in eval(expr, envir, enclos) : Object "y" not found
    > environment(formula(mod))
    <environment: R_GlobalEnv>
    >

But when data is specified in the call to lm(), I get the expected
behaviour:

    > DF <- data.frame(x, y, z)
    > remove(x, y, z)
    > mod <- lm(y ~ x, data=DF)
    > expand.model.frame(mod, "z")
                y          x  z
    1   1.0321783 -0.8145171  1
    2  -1.7639244 -0.5965655  2
    3  -0.8150426 -1.4833768  3
    4   0.6047758  0.2030853  4
    5  -1.9870830 -1.5559511  5
    6  -0.4807146 -1.0751953  6
    7   1.3683736  0.1610050  7
    8   0.9323799  0.3537983  8
    9  -1.0797075 -0.4218457  9
    10 -3.0528776 -1.9750668 10
    > environment(formula(mod))
    <environment: R_GlobalEnv>
    

>From ?expand.model.frame:

    "Usage
    expand.model.frame(model, extras,
                       envir = environment(formula(model)),
                       na.expand = FALSE)

    Arguments
    model a fitted model
    extras one-sided formula or vector of character strings describing new
variables to be added
    envir an environment to evaluate things in
    na.expand logical; see below"
    
So, if "things" are evaluated by default in environment(formula(model)), why
does the first example fail and the second one work? Obviously, I'm not
understanding something properly here.

Any help would be appreciated -- either to get expand.model.frame() to work
or to suggest an alternative approach.

Happy new year to all.

John

--------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox




More information about the R-help mailing list