[R] Genuine relative paths with R

Ista Zahn
Sat, 06 Oct 2018 16:42:59 -0000

On Sat, Oct 6, 2018 at 12:40 PM Ista Zahn <istazahn at gmail.com>
wrote:
>
> Hi Olivier,
>
> Sorry for misspelling your name! Please see inline below.
>
> On Sat, Oct 6, 2018 at 9:58 AM Olivier GIVAUDAN
> <olivier_givaudan at hotmail.com> wrote:
> >
> > Hi Ista,
> >
> > Thank you for your reply.
> >
> > My motivation is described at the 3rd line of my initial message:
> > "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."
> >
> > The main point is simply to avoid any hardcoded path in my R scripts,
as you wrote in your examples.
>
> My claim is that you cannot avoid hardcoding paths. Even if the
> feature you requested existed, you would still have to do e.g.,
>
> source("/path/to/dir/file.R")
>
> That is just as much hard-coded as the (only slightly more verbose)
>
> cd("/path/to/dir")
> source("file.R")
>
> So, I'm afraid I still don't get it. What is it that you actually
want
> to do that you currently cannot?

I should have added that my assumption is that you will call

setwd("/path/to/dir")
source("file.R")

interactively, not that you will hard-code this in your script.

Best,
Ista
>
> Best,
> Ista
> >
> > BTW I don't use R with command line, only within RStudio or with
the default GUI.
> >
> > Best regards,
> >
> > Olivier (and not Oliver )
> > ________________________________
> > De : Ista Zahn <istazahn at gmail.com>
> > Envoy? : samedi 6 octobre 2018 12:56
> > ? : olivier_givaudan at hotmail.com
> > Cc : r-help at r-project.org
> > Objet : Re: [R] Genuine relative paths with R
> >
> > Hi Oliver,
> >
> > Interesting question. Can you describe your motivation in a little
> > more detail? That is, why do you what this feature? I ask because to
> > my way of thinking you have to know the path to the script in order to
> > call it in the first place. If calling from R, is
> >
> > setwd("/path/to/dir")
> > source("file.R")
> >
> > really so much worse than
> >
> > source("path/to/dir/file.R")
> >
> > ?  If it is worse, why?
> >
> > Similarly if calling from a shell, is
> >
> > cd /path/to/dir
> > Rscript file.R
> >
> > really so much worse than
> >
> > Rscript /path/to/dir/file.R
> >
> > ? Again, if is worse, why?
> >
> > Best,
> > Ista
> > On Sat, Oct 6, 2018 at 8:25 AM Olivier GIVAUDAN
> > <olivier_givaudan at 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 at 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.