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

Ravi Varadhan ravi.varadhan at jhu.edu
Sat Feb 14 22:29:46 CET 2015


Yes, this is a very important point. Thank you, Bill.


Best,

Ravi

________________________________
From: William Dunlap <wdunlap at tibco.com>
Sent: Friday, February 13, 2015 4:56 PM
To: Ravi Varadhan
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] Unable to use `eval(parse(text))' in nlme::lme

> 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<http://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<http://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<http://tibco.com>

On Mon, Feb 9, 2015 at 6:44 AM, Ravi Varadhan <ravi.varadhan at jhu.edu<mailto: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<mailto: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