[R] Question about "evalq"

ronggui ronggui.huang at gmail.com
Mon May 28 08:01:14 CEST 2007


Got it. Thanks very much.

On 5/28/07, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> How about 'traceback'?  (It does not necesssarily show all the frames, but
> it does help and the exceptions are fairly esoteric.)
>
> On Mon, 28 May 2007, ronggui wrote:
>
> > 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
> >>
> >
> >
> >
>
> --
> 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



More information about the R-help mailing list