Thanks Gabor, that makes sense now. In case anyone else runs into something similar, I ended up just passing a character string of the formula so it could be coerced to a formula in the correct environment.
Thanks again, Josh On Mon, Jul 4, 2011 at 4:26 AM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > On Mon, Jul 4, 2011 at 4:11 AM, Joshua Wiley <jwiley.ps...@gmail.com> wrote: >> Hi All, >> >> I have constructed two expressions (e1 & e2). I can see that they are >> not identical, but I cannot figure out how they differ. >> >> ############### >> dat <- mtcars >> e1 <- expression(with(data = dat, lm(mpg ~ hp))) >> e2 <- as.expression(substitute(with(data = dat, lm(f)), list(f = mpg ~ hp))) >> >> str(e1) >> str(e2) >> all.equal(e1, e2) >> identical(e1, e2) # false >> >> eval(e1) >> eval(e2) >> ################ >> >> The context is trying to use a list of formulae to generate several >> models from a multiply imputed dataset. The package I am using (mice) >> has methods for with() and that is how I can (easily) get the pooled >> results. Passing the formula directly does not work, so I was trying >> to generate the entire call and evaluate it as if I had typed it at >> the console, but I am missing something (probably rather silly). >> > > In e1, mpg ~ hp is a call object but in e2 its a formula with an environment: > >> e1[[1]][[3]][[2]] > mpg ~ hp >> e2[[1]][[3]][[2]] > mpg ~ hp >> >> class(e1[[1]][[3]][[2]]) > [1] "call" >> class(e2[[1]][[3]][[2]]) > [1] "formula" >> >> environment(e2[[1]][[3]][[2]]) > <environment: R_GlobalEnv> > > -- > Statistics & Software Consulting > GKX Group, GKX Associates Inc. > tel: 1-877-GKX-GROUP > email: ggrothendieck at gmail.com > -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/ ______________________________________________ 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.