[R] detecting entry into a recursive function

Benjamin Tyner btyner at gmail.com
Sun Feb 17 02:55:38 CET 2013


Given a function that calls itself, what's the best way to detect the 
entry point? The best I came up with is:

   IsEntryPoint <- function(){

     par <- sys.call(-1L)[[1]]
     grandpar <- sys.call(-2L)[[1]]

     !identical(par, grandpar)
   }

but this won't work for functions that don't directly call themselves; 
for example, in this one the paste gets inserted in the call stack, so i 
is always TRUE.

   f <- function(d){

     i <- IsEntryPoint()

     if(d > 1L) paste(d, f(d-1L))
   }

Any ideas?

Regards,
Ben




More information about the R-help mailing list