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

Uwe Ligges ligges at statistik.tu-dortmund.de
Sat Oct 23 17:27:10 CEST 2010



On 23.10.2010 17:25, Martin Maechler wrote:
> 2010/10/23 Uwe Ligges<ligges at statistik.tu-dortmund.de>:
>>
>>
>> On 23.10.2010 17:08, Uwe Ligges wrote:
>>>
>>> Looks like those ETH pages were nnot updated after the R-2.12.0 release
>>> (they do not show current R-tached / R-devel), hence CCing Martin
>>> Maechler.
>>
>>
>> ... which I actually do now...
>
> Hmm, but why?
> The daily snapshot page *does* show the current R-patched and R-devel
> tar balls ?
>
> Or what were you talking about ?

We are talking about the

http://stat.ethz.ch/R-manual/

page. R-devel NEWS show R-2.12.0, just as on example.

Uwe




> Regards,
> Martin
>
>>
>> Uwe
>>
>>
>>> Best,
>>> Uwe Ligges
>>>
>>>
>>>
>>>
>>>
>>> On 22.10.2010 21:54, Vitally S. wrote:
>>>>
>>>>
>>>>
>>>> John Chambers<jmc4 at stanford.edu>  writes:
>>>>
>>>>> 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".
>>>>>
>>>>
>>>> I am following the news in daily snapshots from here
>>>> ftp://ftp.stat.math.ethz.ch/Software/R
>>>> and the above line is still not in the NEWS of today's version.
>>>>
>>>> Thanks for the patch. Looking forward to the stable release.
>>>>
>>>> Vitally.
>>>>
>>>>> 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<jmc4 at 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 env at .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-bounces at r-project.org
>>>>>>>>> [mailto:r-devel-bounces at r-project.org] On Behalf Of Troy Robertson
>>>>>>>>> Sent: Wednesday, October 06, 2010 6:13 PM
>>>>>>>>> To: 'r-devel at 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-bounces at r-project.org
>>>>>>>>> [mailto:r-devel-bounces at r-project.org] On Behalf Of Vitally S.
>>>>>>>>> Sent: Thursday, October 21, 2010 9:00 AM
>>>>>>>>> To: John Chambers
>>>>>>>>> Cc: r-devel at 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 at r-project.org mailing list
>>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel>>>
>>>>>>>>>>> ______________________________________________
>>>>>>>>>
>>>>>>>>> R-devel at r-project.org mailing list
>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel>>>>
>>>>>>>>> ______________________________________________
>>>>>>>
>>>>>>> R-devel at r-project.org mailing list
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel>
>>>>>>> ______________________________________________
>>>>>>
>>>>>> R-devel at r-project.org mailing list
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>>
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>



More information about the R-devel mailing list