Can you just print what you need to know? For example: > fact <- function(x) { + if(x<1) ans <- 1 else ans <- x*fact(x-1) + print(sys.call()) + cat(sprintf("X is %i\n",x)) + print(ans) + } > fact(4) fact(x - 1) X is 0 [1] 1 fact(x - 1) X is 1 [1] 1 fact(x - 1) X is 2 [1] 2 fact(x - 1) X is 3 [1] 6 fact(4) X is 4 [1] 24
2009/4/13 Stavros Macrakis <macra...@alum.mit.edu>: > I would like to trace functions, displaying their arguments and return > value, but I haven't been able to figure out how to do this with the > 'trace' function. > > After some thrashing, I got as far as this: > > fact <- function(x) if(x<1) 1 else x*fact(x-1) > tracefnc <- function() dput(as.list(parent.frame()), # > parent.frame() holds arg list > control=NULL) > trace("fact",tracer=tracefnc,print=FALSE) > > but I couldn't figure out how to access the return value of the > function in the 'exit' parameter. The above also doesn't work for > "..." arguments. (More subtly, it forces the evaluation of promises > even if they are otherwise unused -- but that is, I suppose, a weird > and obscure case.) > > Surely someone has solved this already? > > What I'm looking for is something very simple, along the lines of > old-fashioned Lisp trace: > >> defun fact (i) (if (< i 1) 1 (* i (fact (+ i -1))))) > FACT >> (trace fact) > (FACT) >> (fact 3) > 1> (FACT 3) > 2> (FACT 2) > 3> (FACT 1) > 4> (FACT 0) > <4 (FACT 1) > <3 (FACT 1) > <2 (FACT 2) > <1 (FACT 6) > 6 > > Can someone help? Thanks, > > -s > > ______________________________________________ > 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. > -- HUANG Ronggui, Wincent PhD Candidate Dept of Public and Social Administration City University of Hong Kong Home page: http://asrr.r-forge.r-project.org/rghuang.html ______________________________________________ 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.