[R] Unable to use `eval(parse(text))' in nlme::lme
Rolf Turner
r.turner at auckland.ac.nz
Sun Feb 8 21:49:41 CET 2015
On 09/02/15 06:46, Ravi Varadhan wrote:
> Hi,
>
> I would like to run lme() on a number of response variables in a
> dataframe in an automatic manner. Bu, when I use
> eval(parse(text=yname)) to denote the LHS of the formula in lme(), I
> get the following error message:
>
>
>
>> require(nlme)
>
>
>
>> mod2 <- with(subset(labdata2, Transplant_type!=0 & time >0),
>> lme(eval(parse(text=yname)) ~ time + as.factor(gvhd), random =
>> ~1|Patient, correlation = corAR1(), method="ML",
>> na.action=na.omit))
> Error in model.frame.default(formula = ~Patient + yname + time +
> gvhd, : variable lengths differ (found for 'yname')
>
> The same usage works well in lme4::lmer without any problems.
>
>
>
> It seems that there is a problem in how the formula object is
> evaluated in lme(). Is there an alternative way to do this?
What about trying some'at lahk:
fmla <- as.formula(paste(yname,"~ time + as.factor(gvhd)"))
mod2 <- with(...., lme(fmla, random = ....))
Also you would probably be better off using the data argument rather
then using with(); this could have some impact on the environment in
which the formula is evaluated.
Just stabbing in the dark here since you did not provide a reproducible
example.
cheers,
Rolf Turner
--
Rolf Turner
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276
Home phone: +64-9-480-4619
More information about the R-help
mailing list