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.

Reply via email to