Re: [Rd] The default behaviour of a missing entry in an environment

From: Trishank Karthik Kuppusamy <tk47_at_nyu.edu>
Date: Fri, 13 Nov 2009 15:03:03 -0500

On Nov 13, 2009, at 2:47 PM, Duncan Murdoch wrote:

> Inconsistent with what happens for lists:
>
> > x <- list()
> > x$b
> NULL
>
> and attributes:
>
> > attr(x, "b")
> NULL
Ah, I see. I would claim that the same argument for default safety should apply here too.

> It is already a little stricter than $ on a list:
>
> > x$longname <- 1
> > x$long
> [1] 1
> > e$longname <- 1
> > e$long
> NULL
I apologize that I cannot say that this is a good idea for reasons of safety and readability.

> so I supposed we could make it even more strict, but there is an awful lot of code out there that uses tests like
>
> if (!is.null(x <- e$b)) { do something with x }
>
> and all of that would break.

Unfortunately, such code does make it harder to detect programming errors. I understand should the hands of R be tied by backwards-compatability; bad habits are hard to break. Thanks for your time.

-Trishank



R-devel_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri 13 Nov 2009 - 20:05:55 GMT

This archive was generated by hypermail 2.2.0 : Fri 13 Nov 2009 - 21:50:24 GMT