In ?eval, it says

    ...  If ‘envir’ is not
    specified, then the default is ‘parent.frame()’ (the environment
    where the call to ‘eval’ was made).

I tried the following example with "eval(expr)"  and "eval(expr,
parent.frame())" in f(). The results are different, which are not
consistent with the help. Could somebody let know whether I
misunderstand the help? Or there is something with the help?


> expr=expression(print(paste('x =', x)))
> x=0
> f=function() {
+   x=2
+   eval(expr)
+   eval(expr, parent.frame())
+   eval(expr, parent.frame(2))
+   eval(expr, parent.frame(3))
+ }
> g=function() {
+   x=1
+   f()
+ }
>
> g()
[1] "x = 2"
[1] "x = 1"
[1] "x = 0"
[1] "x = 0"

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to