Untested, you probably want to add pattern=\\.R$<file:///\\.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 From: Michael [mailto:comtech....@gmail.com] 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 <wdun...@tibco.com<mailto:wdun...@tibco.com>> 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: r-help-boun...@r-project.org<mailto:r-help-boun...@r-project.org> > [mailto: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<mailto: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.dun...@gmail.com> > <mailto:murdoch.duncan@gmail.<mailto:murdoch.duncan@gmail.>**com<murdoch.dun...@gmail.com<mailto: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<mailto: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<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. [[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.