[Rd] scoping problems (PR#614)

kjetilh@umsanet.edu.bo kjetilh@umsanet.edu.bo
Mon, 24 Jul 2000 23:51:12 +0200 (MET DST)


I am resubmitting this to r-bugs, since Thomas Lumley indicates that it
might be an error:

On Wed, 5 Jul 2000, Thomas Lumley wrote:

> On Wed, 5 Jul 2000, halvorsen wrote:
>
> > Hola!
> >
> > I have the following simple function:
> >
> > > testcar
> > function(pow){
> >            ob <- glm(Pound~CG+Age+Vage,data=car,weights=No,
> >
subset=No>0,family=quasi(link=power(pow),var=mu^2))
> >
> >            deviance(ob)
> > }
> > But trying to run it gives:
> >
> > > testcar(1/2)
> > Error in power(pow) : Object "pow" not found
>
> 'pow' isn't found because quasi() is looking for it in a strange
place.
> Normally you would expect this sort of syntax to work, but the family
> functions do some tricky things to allow you to specify things with or

> without quotes and without or without parentheses.
>
> I suspect this might count as a bug.
>
> In any case, you can fix it by doing
> eval(substitute(glm(Pound~CG+Age+Vage,data=car,weights=No subset=No>0,

> family=quasi(link=power(pow),var=mu^2))))
>

As an additional note. This probably won't work if the argument to
testcar
is a variable.

A more reliable version is
 eval(substitute(glm(Pound~CG+Age+Vage,data=car,weights=No subset=No>0,
 family=quasi(link=power(pow),var=mu^2))),list(pow=pow))

( I moved the ,list argument from "substitute" to "eval" to get it
work.)

Kjetil Halvorsen




-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._