[R] Recall for parent

Thomas Lumley tlumley at u.washington.edu
Thu Mar 30 17:28:20 CEST 2006


On Wed, 29 Mar 2006, Paul Roebuck wrote:

> What's the best way to simulate Recall for parent function?
> Consider this one-time recursive code:
>
> alwaysEven <- function(x) {
>    handleOdd <- function(x) {
>        alwaysEven(x-1)    # use Recall-like here
>    }
>
>    return(if (x %% 2) handleOdd(x) else x)
> }
> any2even <- alwaysEven
> rm(alwaysEven)
> any2even(3)

You can make anonymous recursive functions with local()

whatever <- local({
               alwaysEven <- function(x) {
                  handleOdd <- function(x) {
                     alwaysEven(x-1)
               }
               return(if (x %% 2) handleOdd(x) else x)
               }
           alwaysEven
           })


 	-thomas

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle




More information about the R-help mailing list