Issue with formula conversion
Sorry for the misspelling! And more importantly, thanks a lot for the nice solution and for the quick help!
On Wed, Aug 27, 2014 at 4:22 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Aug 27, 2014, at 1:11 PM, Gang Chen wrote:
Good point! Here is an example: library(nlme) fm <- lme(yield ~ nitro, data=Oats, random=list(Block=pdComSymm(~Variety-1)))
One problem is that youa re misspelling the function name.
Now the problem I'm facing is that the following part pdComSymm(~Variety-1) is read in as a string of characters from an external source: ranEff <- 'pdComSymm(~Variety-1)' The following (ranEff1 <- as.formula(ranEff)) ~Variety - 1 is not what I want. Even though fm <- lme(yield ~ nitro, data=Oats, random=list(Block=pdCompSymm(ranEff1)))
ranEff <- 'pdCompSymm(~Variety-1)' tt <- parse(text=ranEff)
# Returns an unevaluated expression
fm <- lme(yield ~ nitro, data=Oats, random=list(Block=eval(tt) )) fm
Linear mixed-effects model fit by REML Data: Oats Log-restricted-likelihood: -296.5209 Fixed: yield ~ nitro (Intercept) nitro 81.87222 73.66667 snipped rest of output. -- David
works, I don't know the 'pdCompSymm' part in advance and would like to make the process automatic. On Wed, Aug 27, 2014 at 3:49 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Aug 27, 2014, at 12:44 PM, Gang Chen wrote:
Thanks for the help! However, I just need to get pdCompSymm(~1 + Age)
That's not a formula in the R sense of the word. You should do a better job of posting a use case. Perhaps you want an expression? -- David.
without a tilde (~) at the beginning. On Wed, Aug 27, 2014 at 3:34 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Aug 27, 2014, at 11:19 AM, Gang Chen wrote:
A random effect formulation for R package nlme is read in as a string of characters from an input file: ranEff <- "pdCompSymm(~1+Age)" I need to convert 'ranEff' to a formula class. However, as shown below:
as.formula(ranEff)
~1 + Age the "pdCompSymm" is lost in the conversion. Any solutions?
as.formula(paste("~",ranEff))
~pdCompSymm(~1 + Age)
--
David Winsemius
Alameda, CA, USA
David Winsemius Alameda, CA, USA
David Winsemius Alameda, CA, USA