The default behaviour of a missing entry in an environment
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