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.

Reply via email to