Skip to content
Prev 69710 / 398503 Next

help with eval

The scope of variables within show.a is not affected by the environment
that show.a is called in.  The scope of the variables in show.a
is determined by the lexical scope of show.a although you can change 
this via:

  environment(show.a) <- my.env
  show.a() # 200

If you want to create a function that has dynamic (i.e. scope is the caller), 
rather than lexical scope, do this:

   show2.a <- function() { 
      show2.a <- function() a 
      environment(show2.a) <- parent.frame()
      show2.a()
   }
  evalq(show2.a(), my.env) # 200

or you can create a function which evaluates its body in the parent.frame:

   show3.a <- function() eval.parent(substitute(a))
   evalq(show3.a(), my.env) # 200

Also, depending on what you actually want to do, the proto package
may be applicable.
On 5/13/05, Whit Armstrong <whit at twinfieldscapital.com> wrote: