Unexpected interaction between missing() and a blank expression

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Unexpected interaction between missing() and a blank expression

R devel mailing list
This is something I came across just now:

f <- function(x) missing(x)
z <- quote(expr=)

f(z)
# TRUE

The object z contains the equivalent of a missing function argument. Another method for generating a missing arg would be alist(a=)$a .

Should f(z) return TRUE in this case? I interpret missing() as checking whether the parent function call had a value supplied for the given argument. Here, I have supplied an argument (z), so I would expect f to return FALSE.

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Unexpected interaction between missing() and a blank expression

Peter Dalgaard-2

> On 6 Jun 2017, at 18:50 , Hong Ooi via R-devel <[hidden email]> wrote:
>
> This is something I came across just now:
>
> f <- function(x) missing(x)
> z <- quote(expr=)
>
> f(z)
> # TRUE
>
> The object z contains the equivalent of a missing function argument. Another method for generating a missing arg would be alist(a=)$a .
>
> Should f(z) return TRUE in this case? I interpret missing() as checking whether the parent function call had a value supplied for the given argument. Here, I have supplied an argument (z), so I would expect f to return FALSE.

Missing values propagate in R, e.g.

> f <- function(x) missing(x)
> g <- function(y) f(y)
> g()
[1] TRUE

This is technically done by having a "missing" object, which is not really intended to be visible to users, but pops up in a few esoteric constructions. Trying do anything constructive with the missing object usually leads to grief, or at least surprises, e.g.:

> z <-quote(expr=)
> z <- z
Error: argument "z" is missing, with no default

-pd
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: [hidden email]  Priv: [hidden email]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Loading...