There is an unannounced and non-backwards-compatible change to the behaviour of 
'get' in R2.8.0. 'get'ting a missing value now causes an error, whereas 
hitherto it's just returned a "missing" object. For example, in R2.8.0 this 
happens:

test> getto <- function( x) get( 'x', sys.frame(1))
test> getto()
Error in get("x", sys.frame(1)) :
  argument "x" is missing, with no default

whereas in R2.7.1 this happens:

test> getto()

test>

i.e. a "missing" object.

While I can see some reason to the change, the error always would have gotten 
triggered eventually if it actually mattered-- and the new behaviour is 
inconsistent with other extraction functions:

test> getto2 <- function(x) sys.frame(1)$x
test> getto2()

test>

and the same goes for '[['.

'mget' also returns a missing object, rather than tripping an error.

The new 'get' breaks code in packages 'mvbutils' and 'debug'. At least 54 
separate functions in those packages use 'get', so there'd be a fair bit of 
work in checking & changing all these to 'mget'! (Not to mention the entire 
rest of my code body...)

Is it possible to 'get' the old behaviour back?

Mark Bravington
CSIRO Mathematics & Information Science
CSIRO Marine Lab
Hobart
Australia

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

Reply via email to