[Rd] new.env does not recognize parents from subclasses of "environment"

Vitally S. spinuvit.list at gmail.com
Thu Oct 21 18:00:01 CEST 2010



Here is an infinite recursion error  which occurs only with S4
subclasses assignment.

 setClass("myenv", contains = "environment")
#[1] "myenv"
 env <- new("myenv")
 env[[".me"]] <- env at .xData
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
 

With basic types it works as expected:

env1 <- new.env()
env1[[".me"]] <- env1

May be this is related to active bindings that you mentioned,  but I am still
reporting it here.

Vitally.


>  Thanks for the report.  Should now be fixed in r-devel and 2.12 patched (rev 53383).
>
> Please do report any cases where a subclass of environment doesn't work.  There are some known cases in locking and
> active binding, that will be fixed in due course.
>
> The workaround for any such problem is usually as.environment().
>
> On 10/20/10 3:17 AM, Vitaly S. wrote:
>> Dear Developers,
>>
>> A lot has been changed in the R12.0 with respect to behavior of "environment"
>> subclasses.  Many thanks for that.
>>
>> One small irregularity, though; new.env does not allow the parent to be from S4
>> subclass.
>>
>>
>>> setClass("myenv", contains="environment")
>> [1] "myenv"
>>> new.env(parent=new("myenv"))
>> Error in new.env(parent = new("myenv")) : 'enclos' must be an environment
>>
>> I wonder if this is a "planed" behavior.
>>
>> The use of .xData  slot obviously works:
>>> new.env(parent=new("myenv")@.xData)
>> <environment: 063bb9e8>
>> Thanks,
>> Vitaly.
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel>



More information about the R-devel mailing list