Hi Don,

Thanks for your message.

> First fact:
​
>  R understands relative paths (as do the other languages you mentioned) (you 
> have misunderstood R if you think it doesn't)​

I never said R doesn't understand relative paths (which software doesn't...). I 
simply said it is not straightforward to use relative paths in R as the 
function 'MyOwnPath()' returning the path of the R file where this function is 
written and run doesn't exist; therefore workarounds more or less "clean" are 
necessary. Precisely changing (automatically, not manually of course) the 
current working directory to the location where a given R file (.R) is located 
is not straightforward.

> Second fact:​
​
> R interprets relative paths as being relative to its current working directory

Yep.

> Third fact:
​
> To find out R's current working directory type:   getwd() at the R prompt

Yep.

> The easiest way to set the working directory, in my opinion, is by starting R 
> from a linux or Mac command shell (bash, tcsh, etc) environment. You start R 
> by typing "R" at the shell prompt and R's working directory is inherited from 
> the current working directory of the shell.

Yes, I found a similar but more user-friendly (in my opinion) way via .Rproj 
(with RStudio) and .RData (with R GUI).

> No additional packages are necessary in order to manage R's working directory 
> simply and effectively.

Exactly!

Best regards,

Olivier
________________________________
De : MacQueen, Don <macque...@llnl.gov>
Envoyé : lundi 8 octobre 2018 16:04
À : Olivier GIVAUDAN; r-help@r-project.org
Objet : Re: [R] Genuine relative paths with R

A few facts (and some opinions):


First fact:

  R understands relative paths (as do the other languages you mentioned) (you 
have misunderstood R if you think it doesn't)

Second fact:

  R interprets relative paths as being relative to its current working directory

Third fact:

  To find out R's current working directory type:   getwd() at the R prompt

Fourth fact:

   There are various ways to set R's working directory, depending on how you 
are running R. Once R is running, you can if necessary use setwd() at the R 
prompt, and this is platform-independent (but it should rarely be necessary).



The easiest way to set the working directory, in my opinion, is by starting R 
from a linux or Mac command shell (bash, tcsh, etc) environment. You start R by 
typing "R" at the shell prompt and R's working directory is inherited from the 
current working directory of the shell.

If you are using a GUI (i.e., you started R by double-clicking on some icon), 
look for menu commands to set the working directory. Check the documentation 
for the GUI to find out other ways to set the working directory for that GUI.

No additional packages are necessary in order to manage R's working directory 
simply and effectively.

Yes, you can move all the scripts related to some project as a whole to some 
other location and have them run seamlessly using relative paths. Hopefully it 
is clear by now that all that is needed is to set R's working directory to the 
project's main directory.

-Don

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509



On 10/6/18, 4:48 AM, "R-help on behalf of Olivier GIVAUDAN" 
<r-help-boun...@r-project.org on behalf of olivier_givau...@hotmail.com> wrote:

    Dear R users,

    I would like to work with genuine relative paths in R for obvious reasons: 
if I move all my scripts related to some project as a whole to another location 
of my computer or someone else's computer, if want my scripts to continue to 
run seamlessly.

    What I mean by "genuine" is that it should not be necessary to hardcode one 
single absolute path (making the code obviously not "portable" - to another 
place - anymore).

    For the time being, I found the following related posts, unfortunately 
never conclusive or even somewhat off-topic:
    
https://stackoverflow.com/questions/1815606/rscript-determine-path-of-the-executing-script
    
https://stackoverflow.com/questions/47044068/get-the-path-of-current-script/47045368
    
http://r.789695.n4.nabble.com/Script-auto-detecting-its-own-path-td2719676.html

    So I found 2 workarounds, more or less satisfactory:


      1.  Either create a variable "ScriptPath" in the first lines of each of 
my R scripts and run a batch (or shell, etc.) to replace every single 
occurrence of "ScriptPath <-" by "ScriptPath <- [Absolute path of the R 
script]" in all the R scripts located in the folder (and possibly subfolders) 
of the batch file.
      2.  Or create an R project file with RStudio and use the package "here" 
to get the absolute path of the R project file and put all the R scripts 
related to this project in the R project directory, as often recommended.

    But I am really wondering why R doesn't have (please tell me if I'm wrong) 
this basic feature as many other languages have it (batch, shell, C, LaTeX, SAS 
with macro-variables, etc.)?
    Do you know whether the language will have this kind of function in a near 
future? What are the obstacles / what is the reasoning for not having it 
already?

    Do you know other workarounds?

    Best regards,

    Olivier

         [[alternative HTML version deleted]]

    ______________________________________________
    R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
    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.



        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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