From murdoch.duncan at gmail.com  Wed Jul 15 21:18:12 2015
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 15 Jul 2015 15:18:12 -0400
Subject: [Rd] bquote/evalq behavior changed in R-3.2.1
In-Reply-To: <CADT-iToV4pMjoeyNpXRPX_jJNdaD7oqAPr24o+-RfrMv2q+zHw@mail.gmail.com>
References: <CADT-iToV4pMjoeyNpXRPX_jJNdaD7oqAPr24o+-RfrMv2q+zHw@mail.gmail.com>
Message-ID: <55A6B1F4.6010908@gmail.com>

On 15/07/2015 2:49 PM, Dayne Filer wrote:
> Hello,
> 
> I upgraded from 3.1.2 to 3.2.1 and am receiving errors on code that worked
> as I intended previously. Briefly, I am using bquote to generate
> expressions to modify data.table objects within a  function, so I need the
> changes to actually be stored in the given environment. Previously, I used
> code like the following:
> 
> test <- list(bquote(x <- 10))
> fenv <- environment()
> rapply(test, evalq, envir = fenv)
> 
> Although the code in the example above is much simpler, it shows the
> problem. On 3.1.2 the expression is evaluated and x is stored as 10 in the
> given environment, fenv. In 3.2.1 the code throws an error:
> 
> Error in eval(substitute(expr), envir, enclos) : object 'X' not found
> 
> I could not find anything in the release notes that would explain this
> change. Changing evalq to eval works in 3.2.1, but eval does not store x in
> the given environment in 3.1.2.

Please submit this as a bug report (at bugs.r-project.org).  I don't
know for sure that it's a bug, but it looks like one:  there's no 'X' in
your code, so that message is coming from something internal.

It would be helpful to include results that work from 3.1.2 as well as
what you're seeing in 3.2.1.  I'm still seeing the error you reported in
R-devel, so I think the bug is still there...

Duncan Murdoch



[Rd] bquote/evalq behavior changed in R-3.2.1
Duncan Murdoch