[Rd] Problem with "missing" in "local" (PR#1241)
J.C.Rougier@durham.ac.uk
J.C.Rougier@durham.ac.uk
Fri, 4 Jan 2002 15:48:07 +0100 (MET)
Hi Brian,
Prof Brian Ripley wrote:
>
> On Fri, 4 Jan 2002 J.C.Rougier@durham.ac.uk wrote:
>
> > Hi everyone,
> >
> > I encountered unexpected behaviour when calling "missing" within a
> > "local" environment, namely
> >
> > fred <- function(x, y)
> > {
> > x <- as.vector(x)
> > local({
> > dontwantme <- 1:100
> > if (missing(y)) print("No \"y\" today")
> > })
> > x
> > }
> >
> > whereupon I get
> >
> > > fred(1:10)
> > Error in eval(expr, envir, enclos) : "missing" illegal use of missing
> >
> > I think it is reasonable to expect missing to work in this context (I
> > suspect the problem relates to lazy evaluation): if not, it might be
> > helpful to amend the help file.
>
> Why do you think it reasonable? You've take a function from
>
> Evaluate an R expression in a specified environment.
>
> and evaluated it somewhere where missing() is not defined. If you had
> used eval() explicitly, would you think it reasonable? I doubt it.
By "reasonable" in this context I mean that the operation would appear
to be well-defined and useful. I can access x within the local()
environment, ie it is found in the enclosing environment, and I do not
think that y should be treated any differently. If I modify my function
to read
fred <- function(x, y)
{
x <- as.vector(x)
local({
print(x)
print(y)
if (missing(y)) print("No \"y\" today")
})
x
}
then I get the error message
> fred(1:10)
[1] 1 2 3 4 5 6 7 8 9 10
Error in print(y) : Argument "y" is missing, with no default
This error message suggests to me that "missing(y)" would evaluate
correctly.
>
> Which help file did you have in mind?
>
The help file for "missing". This points out that "missing" is not
always reliable, eg after "x <- match.arg(x)". Perhaps this could be
another example of "unreliability".
Cheers, Jonathan.
--
Jonathan Rougier Science Laboratories
Department of Mathematical Sciences South Road
University of Durham Durham DH1 3LE
tel: +44 (0)191 374 2361, fax: +44 (0)191 374 7388
http://www.maths.dur.ac.uk/stats/people/jcr/jcr.html
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._