[R] Unable to use `eval(parse(text))' in nlme::lme

William Dunlap wdunlap at tibco.com
Fri Feb 13 22:56:01 CET 2015


> ff <- reformulate(termlabels=c("time","as.factor(gvhd)"), response=yname,
intercept=TRUE)

If the right hand side of the formula were more complicated than an
additive list of terms,
say '~ time * as.factor(gvhd)' or the left side were more than a name, say
'log(yname)' you
could use bquote() instead of reformulate.  E.g.,
  > formulaTemplate <- log(.(responseName)) ~ time * as.factor(gvhd)
  > lapply(c("y1","y2","y3"), function(yname)do.call(bquote,
list(formulaTemplate, list(responseName=as.name(yname)))))
  [[1]]
  log(y1) ~ time * as.factor(gvhd)

  [[2]]
  log(y2) ~ time * as.factor(gvhd)

  [[3]]
  log(y3) ~ time * as.factor(gvhd)

I used 'do.call' because bquote does not evaluate its first argument,
but we need to evaluate the name 'formulaTemplate'.  You could avoid that
by putting the template verbatim in the call to bquote, as in
  lapply(c("y1","y2","y3"), function(yname)bquote(log(.(responseName)) ~
time * as.factor(gvhd), list(responseName=as.name(yname))))

I like the do.call method because I can bury it in a function and forget
about it.

bquote() retains the environment of the formula template.


Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Mon, Feb 9, 2015 at 6:44 AM, Ravi Varadhan <ravi.varadhan at jhu.edu> wrote:

> Thanks to Rolf, Duncan, and Ben.
>
> Ben, your suggestion worked (with a minor correction of concatenating the
> termlabels into a vector).
>
> Here is the solution to those interested.
>
> ff <- reformulate(termlabels=c("time","as.factor(gvhd)"), response=yname,
> intercept=TRUE)
> dd <- subset(labdata2, Transplant_type!=0 & time >0)
> lme(ff, random=~1|Patient, data=dd, correlation=corAR1(),
> na.action=na.omit)
>
> Best,
> Ravi
>
> Ravi Varadhan, Ph.D. (Biostatistics), Ph.D. (Environmental Engg)
> Associate Professor
> Department of Oncology
> Division of Biostatistics & Bionformatics
> Johns Hopkins University
> 550 N. Broadway
> Baltimore, MD 21205
> 40-502-2619
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list