[R] eval in parent frame: scoping rule confusion
Thomas Lumley
tlumley at u.washington.edu
Fri Mar 15 04:07:16 CET 2002
On Thu, 14 Mar 2002, Jonathan Q. Li wrote:
> Hi all,
>
> Look at the following "stupid" function that is created just to show the
> problem:
>
> outlayer <- function(x)
> {
> inlayer <- function(z){
> e1 <- parent.frame()
> eval(expression(y<-log(z)),e1)
> }
> inlayer(10)
> y
> }
>
> I have a compilation error when running this. My purpose is to create "y"
> variable equal to log(z) in
> the frame of "outlay". How can I achieve this?
The problem is that you can't evaluate y<-log(z) in the outer frame since
there is no z in the outer frame. You want to evaluate y<-log(10) (or
whatever z happens to be)
One way to do this is to replace your eval() with
eval(substitute(y<-log(z)),e1)
Whether that's the best way depends on what your real example looks like.
-thomas
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list