It probably shouldn't be, but It's possible to bind a value to the missing
symbol:

x <- environment()
eval(substitute(x$y <- "wat", list(y = quote(expr=))))
ls()
eval(quote(expr=))

I don't see a way to remove such a binding though.

Peter


On Tue, Feb 19, 2013 at 5:03 AM, peter dalgaard <pda...@gmail.com> wrote:

>
> On Feb 18, 2013, at 19:31 , <luke-tier...@uiowa.edu> <
> luke-tier...@uiowa.edu> wrote:
>
> > I wouldn't count on any way of capturing this thing being reliable in
> > the long term.  As I recall what I do in codetools and the compiler is
> > use features of missing() to test for it, but try to abstract those
> > uses into one or two places only so I can easily change them if
> > missing()'s behavior changes. Basically this internal thing
> > _shouldn't_ be visible at R level, and if we ever figure out how to
> > make that happen it will.
> >
> > Best,
> >
> > luke
> >
>
> Yes. I think we at some point played around with the idea of making the
> missing object a genuine first class object. However, the semantics are too
> irregular, as in
>
> > a <- alist(x=)
> > a$x
>
> > b <- a$x
> > c <- b
> Error: argument "b" is missing, with no default
>
> An R object than can be referenced, but (sometimes) not dereferenced is
> just weird.
>
> On the other hand, if we want to be able to compute on things like
> argument lists, there needs to be a way of representing an absent default.
> Also, a functions evaluation frame will contain objects representing
> arguments, even if they are missing, as in
>
> > (function(x)ls())()
> [1] "x"
>
> So it seems that there is no way around letting lists and environments
> have missing components. It is a quirk that it happens to be implemented as
> as.name(""), though.
>
> Come to think of it, there are a few oddities in the current design:
>
> - why can't we check for a missing list component with missing(a$x)?
>
> - why does a$x above not throw an error? (I can see that it is necessary
> to be able to shuffle argument lists around, and probably also to subset
> them, but direct dereference could be avoided, I think.)
>
>
> > On Mon, 18 Feb 2013, Hadley Wickham wrote:
> >
> >> Hi all,
> >>
> >> I think there's a small buglet in quote:
> >>
> >> str(quote())
> >> # Error in quote() : 0 arguments passed to 'quote' which requires 1
> >> str(quote(expr = ))
> >> # symbol
> >>
> >> I bring this up because this seems like the most natural way of
> >> capturing the "missing" symbol with pure R code, compared to
> >> substitute() or bquote() or formals(plot)$x
> >>
> >> Hadley
> >>
> >>
> >
> > --
> > Luke Tierney
> > Chair, Statistics and Actuarial Science
> > Ralph E. Wareham Professor of Mathematical Sciences
> > University of Iowa                  Phone:             319-335-3386
> > Department of Statistics and        Fax:               319-335-3017
> >   Actuarial Science
> > 241 Schaeffer Hall                  email:   luke-tier...@uiowa.edu
> > Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
> >
> > ______________________________________________
> > R-devel@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> --
> Peter Dalgaard, Professor
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd....@cbs.dk  Priv: pda...@gmail.com
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to