From maechler at stat.math.ethz.ch  Sat Oct 23 17:25:44 2010
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Sat, 23 Oct 2010 17:25:44 +0200
Subject: [Rd] new.env does not recognize parents from subclassesof
	"environment"
In-Reply-To: <4CC2FA73.7050609@statistik.tu-dortmund.de>
References: <cpnwrpdgod9.fsf@gmail.com> <4CBF2514.8050409@stanford.edu>
	<cpnzku71qpq.fsf@gmail.com>
	<77EB52C6DD32BA4D87471DCD70C8D7000393EF21@NA-PA-VBE03.na.tibco.com>
	<4CC077BC.5050209@stanford.edu> <cpnvd4u16vs.fsf@gmail.com>
	<4CC1D1EB.1040102@stanford.edu> <cpnr5fi0zrv.fsf@gmail.com>
	<4CC2FA55.8000207@statistik.tu-dortmund.de>
	<4CC2FA73.7050609@statistik.tu-dortmund.de>
Message-ID: <AANLkTinzfqSPAzRd0Wc4bYJ=N6DES-c1q=S7ZekCEO_R@mail.gmail.com>

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 ?

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
>
>



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