[Rd] nlme: bug in getCovariateFormula (PR#1038)

Setzer.Woodrow@epamail.epa.gov Setzer.Woodrow@epamail.epa.gov
Tue, 31 Jul 2001 22:19:26 +0200 (MET DST)


It looks clunky, but you could maintain consistency across S and R forms
with

eval(parse(text=paste("~",paste(deparse(form),collapse=" "))))


R. Woodrow Setzer, Jr.                                            Phone:
(919) 541-0128
Experimental Toxicology Division                       Fax:  (919) 541-5394
Pharmacokinetics Branch
NHEERL MD-74; US EPA; RTP, NC 27711


                                                                                                                
                    Douglas Bates                                                                               
                    <bates@stat.wis        To:     Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk>                
                    c.edu>                 cc:     Woodrow Setzer/RTP/USEPA/US@EPA, r-devel@stat.math.ethz.ch,  
                    Sent by:               R-bugs@biostat.ku.dk                                                 
                    bates@franz.sta        Subject:     Re: [Rd] nlme: bug in getCovariateFormula (PR#1038)     
                    t.wisc.edu                                                                                  
                                                                                                                
                                                                                                                
                    07/31/01 02:55                                                                              
                    PM                                                                                          
                                                                                                                
                                                                                                                




Peter Dalgaard BSA <p.dalgaard@biostat.ku.dk> writes:

> Setzer.Woodrow@epamail.epa.gov writes:
>
> > The final line in getCovariateFormula() in the nlme package (version
> > 3.1-16) is:
> >     eval(parse(text = paste("~", deparse(form))))
> >
> > however, if deparse(form) exceeds 'width.cutoff (which defaults to
60)',
> > this results in inappropriately placed "~" signs:
> > For example, in my application with the error, form is
> >
> > UnCompetitive(MethoxyresorufinConc, InhibitorConc, Vmax, Km, Ki)
> >
> > the result of the paste() operation in the last line of
getCovariateFormula
> > is:
> >
> > > paste("~",deparse(form))
> > [1] "~ UnCompetitive(MethoxyresorufinConc, InhibitorConc, Vmax, Km, "
> > [2] "~     Ki)"
> >
> > extending width.cutoff gives the intended value:
> >
> > > paste("~",deparse(form,width.cutoff=500))
> > [1] "~ UnCompetitive(MethoxyresorufinConc, InhibitorConc, Vmax, Km,
Ki)"
> >
> > Seems a bit risky for an enforced cutoff in deparse, though.
>
> parse(...deparse(...)) always looks wrong to me anyway. Couldn't one
> use something like
>
> f <- ~1
> f[[2]] <- form
> eval(f)
>
> or
>
> eval(as.call(list(as.name("~"),form)))

> or
>
> eval(substitute(~form)) # that's not going to work in S, though...

Exactly.  The code was originally written for S and ported to R.  Some
of the contorted expressions were things that we found by
experimentation would work in both systems.

> ??
>
> (What is the eval for? Doesn't usually do anything to a
> formula argument.)

In Sv3 at least it assigns a class to the object.

I'll change it to eval(substitute(~form)) for the R package.





-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._