On Thu, Nov 5, 2009 at 12:02 PM, Romain Francois <romain.francois@dbmail.com
> wrote:

> Also, active bindings on the search path seem to do only half of the job:
>
> > e <- new.env()
> > attach( e )
> > makeActiveBinding( "x", function(val) if(missing(val)) "get" else "set",
> as.environment(2) )
> > x
> [1] "get"
> > x <- 3
> > x
> [1] 3
>
>
No, that just assigned to x in your globalenv().
You want to call assign('x',val,e) or x <<- 3.

Jeff


> Romain
>
>
> On 11/05/2009 05:54 PM, Romain Francois wrote:
>
>>
>>
>> I think it is related to the call to duplicate in do_attach:
>>
>> defineVar(TAG(p), duplicate(CAR(p)), s);
>>
>> You can circumvent it by using "importIntoEnv", as in:
>>
>>  > e
>> <environment: 0x9070064>
>>  > e <- new.env()
>>  > makeActiveBinding('x',function() 'foo',e)
>>  > f <- new.env()
>>  > attach( f, pos = 2 )
>>  > .Internal(importIntoEnv( as.environment(2), ls(e), e, ls(e) ))
>> NULL
>>  > x
>> [1] "foo"
>>
>> Romain
>>
>> On 11/05/2009 04:53 PM, Jeffrey Horner wrote:
>>
>>>
>>> Hi,
>>>
>>> Is this expected behavior for active bindings in attached
>>> environments, or is this a bug:
>>>
>>>  e<- new.env()
>>>> makeActiveBinding('x',function() 'foo',e)
>>>> ls(e)
>>>>
>>> [1] "x"
>>>
>>>> attach(e)
>>>> search()
>>>>
>>> [1] ".GlobalEnv" "e" "package:graphics"
>>> [4] "package:grDevices" "package:datasets" "package:utils"
>>> [7] "package:methods" "Autoloads" "package:base"
>>>
>>>> x
>>>>
>>> function() 'foo'
>>>
>>> Should this print 'foo' ? The following works as I would expect:
>>>
>>>  with(e,x)
>>>>
>>> [1] "foo"
>>>
>>> but this doesn't:
>>>
>>>  f<- function() x
>>>> f()
>>>>
>>> function() 'foo'
>>>
>>> However, changing the environment of f does:
>>>
>>>  environment(f)<- e
>>>> f()
>>>>
>>> [1] "foo"
>>>
>>>
>>> Jeff
>>>
>>
>>
>
> --
> Romain Francois
> Professional R Enthusiast
> +33(0) 6 28 91 30 30
> http://romainfrancois.blog.free.fr
> |- http://tr.im/BcPw : celebrating R commit #50000
> |- http://tr.im/ztCu : RGG #158:161: examples of package IDPmisc
> `- http://tr.im/yw8E : New R package : sos
>
>


-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner

	[[alternative HTML version deleted]]

