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("<-")) && is.call(expr[[3]]) && identical(expr[[3]][[1]], 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 > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] 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 > <murdoch.dun...@gmail.com>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 > >> <murdoch.dun...@gmail.com > <mailto:murdoch.duncan@gmail.**com<murdoch.dun...@gmail.com>>> > >> 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]] > > ______________________________________________ > 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. ______________________________________________ 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.