[R] Genuine relative paths with R

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Thu Oct 11 00:31:44 CEST 2018


On 10/10/2018 6:17 PM, Olivier GIVAUDAN wrote:
>> Nothing says a package has to go on CRAN.  You can distribute 
> themprivately to a small audience.
> 
> Yes, I agree in theory. But this solution still violates my own 
> proportionality principle.

Again, you seem to think making a package is a big deal.  Maybe that was 
true 10 years ago (though I wrote and tested a package in a 45 minute 
presentation at UseR 2008), but now it's very easy.

But you're free to decide not to do it:  just please don't repeat false 
claims about R (like the ones about paths that started this long thread).

> 
>> If you know as much about R as the people who wrote it
> 
> I didn't claim that (that's was a quite general / theoretical statement, 
> not necessarily and only applicable to R).

I didn't say you made that claim.  I was answering your question about 
why inventing your own way is not a good idea.  It might be a good idea, 
if you know the system very, very well.  Otherwise, it's probably better 
to work the standard way.

Duncan Murdoch

> 
>> For example, you might thinkthat all front ends set the working 
> directory to the directory of theprogram they are running, because the 
> ones you've tried do it that way. But they don't.
> 
> It runs that way at least on Windows with RStudio and R GUI and I know 
> the recipients of my R code work on Windows with at least one of these 2 
> GUIs. So the workaround I finally found satisfies my current needs
> ------------------------------------------------------------------------
> *De :* Duncan Murdoch <murdoch.duncan using gmail.com>
> *Envoyé :* mercredi 10 octobre 2018 22:07
> *À :* Olivier GIVAUDAN; Jeff Newmiller
> *Cc :* r-help using r-project.org
> *Objet :* Re: [R] Genuine relative paths with R
> On 10/10/2018 5:45 PM, Olivier GIVAUDAN wrote:
>> I'm not sure I'm "inventing my own way" of distributing R code... And I 
>> distribute it to a very limited audience.
> 
> Nothing says a package has to go on CRAN.  You can distribute them
> privately to a small audience.
> 
>> Anyway, why not "inventing a new way" if it's more efficient than the 
>> standard one (I'm talking now in theory)?
> 
> If you know as much about R as the people who wrote it, then you can
> almost certainly invent better ways to do many of the things it does.  R
> Core was constrained by trying to maintain back compatibility, and that
> means some of their solutions aren't perfect.
> 
> But if you don't know it that well, chances are you'll make mistakes
> when you invent your own way of doing it.  For example, you might think
> that all front ends set the working directory to the directory of the
> program they are running, because the ones you've tried do it that way.
> But they don't.
> 
> Duncan Murdoch
> 
>> ------------------------------------------------------------------------
>> *De :* Duncan Murdoch <murdoch.duncan using gmail.com>
>> *Envoyé :* mercredi 10 octobre 2018 21:39
>> *À :* Olivier GIVAUDAN; Jeff Newmiller
>> *Cc :* r-help using r-project.org
>> *Objet :* Re: [R] Genuine relative paths with R
>> On 10/10/2018 5:31 PM, Olivier GIVAUDAN wrote:
>>> I do not want to use the terminal, just double clicks (i.e. the 
>>> simplest, automatic, non-manual way, without having to write a line / 
>>> command).
>>> Therefore everything should happen outside any terminal. The user won't 
>>> use a terminal.
>>> 
>>> I don't have a Mac and I'm not familiar with this OS, sorry.
>>> But I'm really surprised the click method gives different results than 
>>> on Linux and Windows.
>>> I know the click method worked both on Linux (Ubuntu latest version) and 
>>> Windows (10).
>>> 
>>> Yes, I executed my file from a terminal and got obviously the same 
>>> result as you (that's reassuring).
>>> 
>>> Come on guys, creating a package... It's like using a hammer to kill a 
>>> fly...
>> 
>> It's a simple operation to create a package in RStudio.  Not quite a
>> single click, but just a few.
>> 
>> In plain R, it's just a little more work using package.skeleton().
>> 
>> Really, if you are distributing R code, you should do it in the standard
>> way, not invent your own.
>> 
>> Duncan Murdoch
>> 
>>> ------------------------------------------------------------------------
>>> *De :* Duncan Murdoch <murdoch.duncan using gmail.com>
>>> *Envoyé :* mercredi 10 octobre 2018 20:54
>>> *À :* Olivier GIVAUDAN; Jeff Newmiller
>>> *Cc :* r-help using r-project.org
>>> *Objet :* Re: [R] Genuine relative paths with R
>>> On 10/10/2018 4:42 PM, Olivier GIVAUDAN wrote:
>>>> Why are you not simply double-clicking on 'TestPWD' and choosing to 
>>>> execute the file (don't add anything)?
>>>> Are you executing the file from a terminal?
>>> 
>>> Yes, I was executing the file from my terminal.  Otherwise I really have
>>> no idea what the "current directory" is in the Finder.   (I'm on a Mac.
>>> I just tried the click method; it printed my home directory, not the
>>> directory of the script.)
>>> 
>>> I don't know the name of your visual front end, but you are displaying
>>> the working directory that it sets when you click on TestPWD.  That will
>>> be different from the working directory that your user sees in the Terminal.
>>> 
>>> You can see what I saw if you run TestPWD from the Terminal.  It will
>>> print the current working directory, not the one where TestPWD happens
>>> to live.
>>> 
>>> If you want to do the same sort of thing in R, you could set up a script
>>> that calls R, and execute that in the way you executed TestPWD.  But in
>>> another message you said you aren't allowed to do that, so I think your
>>> best solution is the one offered by Bill Dunlap:  organize your files as
>>> an R package.  If you name your package "Olivier", then you can find all
>>> the files in it under the directory returned by
>>> 
>>>     system.file(".", package = "Olivier")
>>> 
>>> The package system is designed for R code, but you can put arbitrary
>>> files into a package:  just store them under the "inst" directory in
>>> your source.  When the package is installed, those files will be moved
>>> up one level, i.e.
>>> 
>>> Olivier/inst/foo
>>> 
>>> will become
>>> 
>>>     system.file("foo", package = "Olivier")
>>> 
>>> Duncan Murdoch
>> 
>




More information about the R-help mailing list