If you restructure your code as a bunch of functions calling functions instead of scripts sourcing scripts then the problem would largely go away. Put the functions into a package with a namespace and it becomes more reliable.
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 Duncan Murdoch > Sent: Monday, February 22, 2010 1:49 PM > To: Rob Forler > Cc: r-help@r-project.org > Subject: Re: [R] relative file path > > On 22/02/2010 3:44 PM, Rob Forler wrote: > > Hello, > > > > Is there a way to find where a script is located within a > script? getwd() > > doesn't do what I want because it depends on where R was > called from. I want > > something like source("randomFile") and within randomFile there is a > > function called whereAmI() which returns c:\blah\blah2\randomFile.R > > > > In perl there is a library called FindBin and $FindBin::Bin has the > > directory of the file that called $FindBin::Bin. > > Some dirty code to do that would be to look back through the > stack for > the local variables in the source() call, and expand the > filename from > there. That's probably what Hadley's code was doing in the > thread that > Hrishi mentioned. > > Here's a version: > > > whereAmI <- function() { > filename <- sys.frames()[[1]]$ofile > normalizePath(filename) > } > > > This works when a call to it is in a file being sourced; if > there were > nested source() calls, then something more elaborate like > Hadley's code > would be needed. And this might break tomorrow: you're not > supposed to > look at local variables like ofile. > > Duncan Murdoch > > ______________________________________________ > 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.