[R] "eval" inside a function call in connection with updating the data slot in the call of lmer
Søren Højsgaard
sorenh at math.aau.dk
Tue Sep 18 00:26:34 CEST 2012
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()
More information about the R-help
mailing list