[R] passing a function as an argument using lazy loading

Gabor Grothendieck
Sun, 14 Mar 2010 21:20:30 -0000

Try this:

> foo2 <- function(x=2*y, y=x/2) eval(substitute(cat(x,y,"\n")))
> foo2(x = 1, y = x/3)
1 0.3333333
> foo2(x = y/2, y = 10)
5 10

On Wed, Mar 10, 2010 at 7:26 AM, Mark Heckmann <mark.heckmann at gmx.de>
wrote:
> I have the following function that makes use of lazy loading.
>
> foo <- function(x=2*y, y=x/2) cat(x,y)
>
> Now I want to be able to modify it like below:
>
> foo(y=x/3)
>
> Of course, this does not work as the object x is not known. Still I would
> like to be able to pass a function as an argument that is evaluated using
> lazy loading.
>
> Can someone help?
>
> Thanks,
> Mark
> ???????????????????????????????????????
> Mark Heckmann
> Dipl. Wirt.-Ing. cand. Psych.
> Vorstra?e 93 B01
> 28359 Bremen
> Blog: www.markheckmann.de
> R-Blog: http://ryouready.wordpress.com
>
> ______________________________________________
> R-help at 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.
>