[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