On Sep 17, 2012, at 3:26 PM, Søren Højsgaard wrote: > Dear list, > Given a linear mixed model (from lme4) I want to 1) first change the input > dataset and then 2) change the model formula. I want this to happen in a > function call; > Please see below. Options 1) and 2) below work whereas 3) fails with the > message >> foo() > Error in is.data.frame(data) : object 'beets2' not found > > Question: What is it one must to in case 3) to have R look "inside" the > function to figure out what "beets2" is?
That will depend on how you offer that 6 letter sequence to the interpreter. Surrounded by quotes will be quite different than without quotes > > Best regards > Søren > ________________ > > library(pbkrtest) > data(beets) > lgs <- lmer(sugpct~block+sow+harvest+(1|block:harvest), data=beets, REML=F) > > foo <- function(){ > ## 1) > beets2 <- transform(beets, yy = sugpct * yield) > ma1 <- lmer(yy~block+sow+harvest+(1|block:harvest), data=beets2, > REML=F) > ma0 <- update(ma1, yy~.) > ## 2) > cl <- getCall(lgs) > cl[["data"]] <- beets2 > mb1 <- eval(cl) > mb0 <- update(mb1, yy~.) > mb0 > ## 3) > cl <- getCall(lgs) > cl[["data"]] <- as.name("beets2") The problem here is that 'beets2' is just a character vector ... with no binding. I'm wondering if you instead want: cl[["data"]] <- get("beets2") > mc1 <- eval(cl) > mc0 <- update(mc1, yy~.) > mc0 > } > foo() No guarantees. I'm not a particularly experienced surgeon of lmer-objects. > -- David Winsemius, MD Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.