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


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

Reply via email to