You need to update your version of R (r-devel or 2.12 patched) to rev
53385 or later, and read NEWS, particularly the line:


- Assignment of an environment to functions or as an attribute to other
objects now works for subclasses of "environment".



On 10/22/10 10:20 AM, Vitally S. wrote:
> Yet another inconsistency. environment<- does not work with S4:
>
>
>> setClass("myenv", contains = "environment")
> [1] "myenv"
>> env <- new("myenv")
>> tf <- function(x){x}
>> environment(tf) <- env
> Error in environment(tf) <- env : 
>   replacement object is not an environment
>
>
> Vitally.
>
>
> John Chambers <j...@stanford.edu> writes:
>>  This is a problem related to the introduction of exact= into the [[ and 
>> [[<- functions. As Bill says, the current
>> method misuses eval.parent() when that argument is added.
>>
>> However, a simpler and more efficient solution is to migrate the checks for 
>> subclasses of "environment" used in
>> other base code into the code for [[<- (and for $<-), at which point the 
>> methods for these functions are no longer
>> needed.
>>
>> A solution on these lines is being tested now and will find its way into 
>> r-devel and 2.12 patched.
>>
>> One other point about the original posting:
>>
>> Please don't use constructions like e...@.xdata. This depends on the current 
>> implementation and is not part of the
>> user-level definition. Use as(env, "environment") or equivalent. (In this 
>> case, the assignment of the object's own
>> environment was irrelevant to the error.)
>>
>> John Chambers
>>
>> On 10/21/10 9:21 AM, William Dunlap wrote:
>>> The traceback looks very similar to a problem
>>> in R 2.11.1 reported earlier this month by Troy Robertson.
>>>    >  From: r-devel-boun...@r-project.org
>>>    >  [mailto:r-devel-boun...@r-project.org] On Behalf Of Troy Robertson
>>>    >  Sent: Wednesday, October 06, 2010 6:13 PM
>>>    >  To: 'r-devel@R-project.org'
>>>    >  Subject: Re: [Rd] Recursion error after upgrade to
>>>    >  R_2.11.1[Sec=Unclassified]
>>> It was due to a miscount of how many frames to go
>>> up before evaluating an expression in
>>> getMethod("[[<-",".environment") because setMethod()
>>> introduced a local function in the new method.
>>>
>>> Bill Dunlap
>>> Spotfire, TIBCO Software
>>> wdunlap tibco.com
>>>
>>>> -----Original Message-----
>>>> From: r-devel-boun...@r-project.org
>>>> [mailto:r-devel-boun...@r-project.org] On Behalf Of Vitally S.
>>>> Sent: Thursday, October 21, 2010 9:00 AM
>>>> To: John Chambers
>>>> Cc: r-devel@r-project.org
>>>> Subject: Re: [Rd] new.env does not recognize parents from
>>>> subclassesof "environment"
>>>>
>>>>
>>>>
>>>> Here is an infinite recursion error  which occurs only with S4
>>>> subclasses assignment.
>>>>
>>>>   setClass("myenv", contains = "environment")
>>>> #[1] "myenv"
>>>>   env<- new("myenv")
>>>>   env[[".me"]]<- ∑
>>>> #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@r-project.org mailing list
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel>>> 
>>>>>> ______________________________________________
>>>> R-devel@r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel>>
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

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

Reply via email to