[R] relative file path

William Dunlap wdunlap at tibco.com
Mon Feb 22 23:07:02 CET 2010


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-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Duncan Murdoch
> Sent: Monday, February 22, 2010 1:49 PM
> To: Rob Forler
> Cc: r-help at 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 at 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.
> 



More information about the R-help mailing list