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?

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")
        mc1 <- eval(cl)
        mc0 <- update(mc1, yy~.)
        mc0
}
foo()

______________________________________________
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.

Reply via email to