I am not familiar with debugger(). I only showed how to list all function definitions in a group of files.
Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com From: Michael [mailto:[email protected]] Sent: Tuesday, November 13, 2012 2:59 PM To: William Dunlap Cc: r-help Subject: Re: [R] How do I step thru all lines (including step into sub-routines) in a R script? Great help! Thanks a lot! The only problem is how do I escape from a big loop? Lets say after a few iterations in that big loop, I've already got enough of the loop and wanted to escape the loop and debug the next line after the loop...? Thanks again! On Tue, Nov 13, 2012 at 4:54 PM, William Dunlap <[email protected]<mailto:[email protected]>> wrote: Untested, you probably want to add pattern=\\.R$ or similar things to the dir() call that lists all the files: filenames <- dir(directoryName, recursive=TRUE, full.names=TRUE) unlist(lapply(filenames, function(file)namesOfFunctionsDefined(parse(file)))) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com<http://tibco.com/> From: Michael [mailto:[email protected]<mailto:[email protected]>] Sent: Tuesday, November 13, 2012 2:51 PM To: William Dunlap Cc: r-help Subject: Re: [R] How do I step thru all lines (including step into sub-routines) in a R script? Thanks a lot! How do I iteratively loop your function thru all scripts under a big folder and its sub-folders? Thanks again! On Tue, Nov 13, 2012 at 4:45 PM, William Dunlap <[email protected]<mailto:[email protected]>> wrote: You can make a list of the names of the functions defined at the top level in a script using the following. namesOfFunctionsDefined <- function (expr) { # expr is typically output of parse(file) expr <- as.list(expr) isFunctionAssignment <- function(expr) is.call(expr) && identical(expr[[1]], as.name<http://as.name/>("<-")) && is.call(expr[[3]]) && identical(expr[[3]][[1]], as.name<http://as.name/>("function")) asgns <- vapply(expr, isFunctionAssignment, FALSE) expr <- expr[asgns] vapply(expr, function(e) deparse(e[[2]])[1], "") } E.g., for the script /tmp/r.R containing f1 <- function(x)x+1 x <- 10 x1 <- f1(x) f2 <- function(x)x+1 x2 <- f2(x) I get: > namesOfFunctionsDefined(parse("/tmp/r.R")) [1] "f1" "f2" Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com<http://tibco.com/> > -----Original Message----- > From: [email protected]<mailto:[email protected]> > [mailto:[email protected]<mailto:[email protected]>] On > Behalf > Of Michael > Sent: Tuesday, November 13, 2012 2:08 PM > To: Duncan Murdoch > Cc: r-help > Subject: Re: [R] How do I step thru all lines (including step into > sub-routines) in a R script? > > Is there a way to strip out all functions in hundreds of R script? > > And then I can create a script which does "debug(foo1); debug(foo2); > debug(foo3);",etc? > > Thank you! > > On Tue, Nov 13, 2012 at 3:56 PM, Duncan Murdoch > <[email protected]<mailto:[email protected]>>wrote: > > > On 12-11-13 4:50 PM, Michael wrote: > > > >> but there are hundreds of such functions...? how to mark them all using > >> "debug"? > >> > > > > When you see you are about to enter one that you haven't marked, you can > > mark it from within the debugger. (So in some other debuggers you'd type > > "s" to step in; in R you need to type "debug(foo)" then "n". > > > > Duncan Murdoch > > > > thanks! > >> > >> On Tue, Nov 13, 2012 at 3:43 PM, Duncan Murdoch > >> <[email protected]<mailto:[email protected]> > <mailto:murdoch.duncan@gmail.<mailto:murdoch.duncan@gmail.>**com<[email protected]<mailto:[email protected]>>>> > >> wrote: > >> > >> On 12-11-13 4:05 PM, Michael wrote: > >> > >> How do I step thru all lines (including step into sub-routines) > >> in a R > >> script? > >> > >> Hi all, > >> > >> I know I can put a "browser()" into any place... > >> > >> but how to step into sub-routines? > >> > >> Keep pressing "n" at the break-point seems not getting me into the > >> sub-routines? > >> > >> > >> Mark all your functions for debugging using debug(). It's not like > >> a debugger that will single step until you tell it to just continue > >> on, but it gives you the individual steps. > >> > >> When you've had enough of that, use undebug() to mark the functions > >> for stepping over. > >> > >> Duncan Murdoch > >> > >> > >> > > > > [[alternative HTML version deleted]] > > ______________________________________________ > [email protected]<mailto:[email protected]> mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] ______________________________________________ [email protected] 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.

