Hong Ooi
2017-Jun-06 16:50 UTC
[Rd] Unexpected interaction between missing() and a blank expression
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.
peter dalgaard
2017-Jun-06 18:37 UTC
[Rd] Unexpected interaction between missing() and a blank expression
> On 6 Jun 2017, at 18:50 , Hong Ooi via R-devel <r-devel at r-project.org> 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 <- zError: 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: pd.mes at cbs.dk Priv: PDalgd at gmail.com