[Rd] experiments with slot functions and possible problems NOTE
Thomas Petzoldt
Thomas.Petzoldt at tu-dresden.de
Mon Jan 21 18:06:47 CET 2008
Hi Gabor,
nice to see you on this thread.
As you see, I'm back with my old problem.
Gabor Grothendieck wrote:
> If the intention is to place fList's contents in the global
> environment
> then you need to specify that in addtoenv or else it assumes
> the parent environment.
No, it was the intention to keep the global environment as clean as
possible and to use local data structures instead.
>> flistA <- list(foo = function () 1:10, bar = function() log(foo()))
>> makefun <- function(fList) addtoenv(fList, .GlobalEnv)
>> makefun(flistA)
> $foo
> function() {
> 1:10
> }
>
> $bar
> function() {
> log(foo())
> }
>
>> foo()
> [1] 1 2 3 4 5 6 7 8 9 10
>> bar()
> [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595
1.9459101
> [8] 2.0794415 2.1972246 2.3025851
>
> Note that this takes advantage of the fact that in your example
> flistA was
> defined in the global environment in the first place. Had that not
> been the
> case we would have had to reset the environment of bar so that it
> could find foo.
>
> By the way. What about just attach(flistA) ?
You are right, attach works. I used it in another package instead of
addtoenv, but it introduced new problems, even if I use it the following
way:
attach(flist)
on.exit(detach(flist))
[...]
Additionally, I've never seen attach in another package.
Thomas P.
More information about the R-devel
mailing list