From Mark.Bravington at csiro.au  Fri Oct 24 05:07:31 2008
From: Mark.Bravington at csiro.au (Mark.Bravington at csiro.au)
Date: Fri, 24 Oct 2008 14:07:31 +1100
Subject: [Rd] changed behaviour of 'get' in 2.8.0: request for unchange
Message-ID: <62C82B39B8A85E4B95A18F7F7B852F870C6FE1A2@exvic-mbx03.nexus.csiro.au>

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



[Rd] changed behaviour of 'get' in 2.8.0: request for unchange
Mark.Bravington at csiro.au