Here are two ways:

# method 1. nest an extra alwaysEven
alwaysEven <- function(x) {
 alwaysEven <- function(x) {
   handleOdd <- function(x) {
       alwaysEven(x-1)    # use Recall-like here
   }

   return(if (x %% 2) handleOdd(x) else x)
 }
 alwaysEven(x)
}
any2even <- alwaysEven
rm(alwaysEven)
any2even(3)


# method 2.  sys.function

alwaysEven <- function(x) {
   handleOdd <- function(x) {
       sys.function(1)(x-1)    # use Recall-like here
   }

   return(if (x %% 2) handleOdd(x) else x)
}
any2even <- alwaysEven
rm(alwaysEven)
any2even(3)



On 3/29/06, Paul Roebuck <[EMAIL PROTECTED]> 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)
>
> ----------------------------------------------------------
> SIGSIG -- signature too long (core dumped)
>
> ______________________________________________
> R-help@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
>

______________________________________________
R-help@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

Reply via email to