Re: [Rd] Question about substitute() and function def

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Thu 14 Sep 2006 - 19:38:12 GMT

On 9/14/2006 3:01 PM, Seth Falcon wrote:
> Hi,
>
> Can someone help me understand why
>
> substitute(function(a) a + 1, list(a=quote(foo)))
>
> gives
>
> function(a) foo + 1
>
> and not
>
> function(foo) foo + 1
>
> The man page leads me to believe this is related to lazy evaluation of
> function arguments, but I'm not getting the big picture.

I think it's the same reason that this happens:

 > substitute(c( a = 1, b = a), list(a = quote(foo))) c(a = 1, b = foo)

The "a" in function(a) is the name of the arg, it's not the arg itself (which is missing). Now a harder question to answer is why this happens:

 > substitute(function(a=a) 1, list(a=quote(foo))) function(a = a) 1

I would have expected to get "function(a = foo) 1".

Duncan Murdoch



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri Sep 15 05:39:59 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 14 Sep 2006 - 20:16:58 GMT.

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