Re: [R] Question about "evalq"

From: ronggui <ronggui.huang_at_gmail.com>
Date: Mon, 28 May 2007 10:08:53 +0800

In that "the meaning of parent.frame depends on where it is evaluated", is there a nice way to figure out which frame an express is evaluated? for example, I would like to konw what does parent.frame(2) refer to.

> f1 <- function(x,digits=5) lapply(x, f2)
> f2 <- function(x) evalq(print(x+1,digits=digits),list(x=x),parent.frame(2))
> f1(list(x1=1))
Error in print.default(x + 1, digits = digits) :  object "digits" not found

On 5/27/07, Prof Brian Ripley <ripley_at_stats.ox.ac.uk> wrote:
> The meaning of parent.frame depends on where it is evaluated. So one
> should not expect it to do the same thing in two equivalent expressions
> (and nor should one expect deparse to do so, for example).
>
> A pretty close analogy is that using a symbolic link in a file system is
> equivalent to using the original file path, at least until you try '..' or
> 'pwd' on the path. (In the case of 'pwd' it depends on the OS: POSIX
> only requires '_an_ absolute pathname'.)
>
> On Sun, 27 May 2007, ronggui wrote:
>
> > The help page of eval says: The 'evalq' form is equivalent to
> > 'eval(quote(expr), ...)'. But the following is not equivalent. Can
> > anyone give me some explaination? Thanks very much.
> >
> >> f1 <- function(x,digits=5) lapply(x, f2)
> >> f2 <- function(x) eval(quote(print(x+1,digits=digits)),list(x=x),parent.frame(2))
> >> f1(list(x1=1))
> > [1] 2
> > $x1
> > [1] 2
> >
> >>
> >> f1 <- function(x,digits=5) lapply(x, f2)
> >> f2 <- function(x) evalq(print(x+1,digits=digits),list(x=x),parent.frame(2))
> >> f1(list(x1=1))
> > Error in print.default(x + 1, digits = digits) :
> > object "digits" not found
>
> --
> Brian D. Ripley, ripley_at_stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>

-- 
Ronggui Huang
Department of Sociology
Fudan University, Shanghai, China

______________________________________________
R-help_at_stat.math.ethz.ch 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.
Received on Mon 28 May 2007 - 02:21:04 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 28 May 2007 - 06:31:22 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.