Best way to locate R executable from within R?
On Tue, May 22, 2012 at 11:39 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
On Tue, May 22, 2012 at 1:34 PM, Henrik Bengtsson <hb at biostat.ucsf.edu> wrote:
Hi,
I'd like to spawn of a new R process from within R using system(),
e.g. system("R -f myScript.R"). ?However, just specifying "R" as in
that example is not guaranteed to work, because "R" may not be on the
OS's search path.
?What is the best way, from within a running R, to infer the command
(basename or full path) for launching R in way that it works on any
OS? ?I came up with the following alternatives, but I'm not sure if
they'll work everywhere or not:
1. Rbin <- commandArgs()[1];
2. Rbin <- file.path(R.home(), "bin", "R");
Other suggestions that are better?
At least on Windows one could run R via R.exe, Rterm.exe or Rgui.exe amd #2 would not pick up the differences. ?On the other hand if I do this on the Windows command line on my Vista system with R 2.15.0 patched: cd \program files\R\R-2.15.x\bin\i386 Rterm.exe and then enter commandArgs() into R, the output is "Rterm.exe" with no path.
Thanks, I overlooked this need. For my particular use case, I'm interested in launching R in "batch" mode, so "R" will do (but not "Rgui").
The fact that one can have 32 bit and 64 bit R executables on the same
system complicates things too.
Thus, on Windows something like this might work:
? file.path(R.home("bin"), R.version$arch, basename(commandArgs()[[1]]))
If there are cases that I missed then this might pick up those too:
? R <- commandArgs()[[1]]
? if (R == basename(R)) R <- file.path(R.home("bin"), R.version$arch, R)
FYI, R.home("bin") is not the same as file.path(R.home(), "bin"), cf.
help("R.home"). R.home("bin") will pick up the current architecture
directory (by using .Platform$r_arch), e.g.
R.home("bin")
[1] "C:/PROGRA~1/R/R-2.15.0patched/bin/x64" /Henrik
-- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel