这看起来很简单,之前可能已经被问过,但我无法通过搜索找到它。
我安装了几种口味的
R
。 我只是想知道,当我运行 RStudio 时,它指向的是哪种类型的 R
。 因此,我需要一个命令(最好是在 RStudio 本身内),它可以告诉我当前正在使用的 RStudio 窗口所使用的底层 R
可执行文件。
需要明确的是,我不需要/想知道我正在使用的 R 的版本(例如,
R version 3.2.2 (2015-08-14) -- 'Fire Safety'
)。 相反,我想知道 RStudio 用于访问 R 的实际路径(从 RStudio 内部查看它),以便我“真正”知道它正在使用哪个版本。 (例如,/usr/local/bin/R
。)
这里有很多精彩的讨论,其中一些是特定于操作系统的。 我有一台Mac。 就我而言,我发现:
> system("type R")
R is /usr/local/bin/R
> R.home()
[1] "/usr/local/Cellar/r/3.2.2_1/R.framework/Resources"
> file.path(R.home("bin"), "R")
[1] "/usr/local/Cellar/r/3.2.2_1/R.framework/Resources/bin/R"
brew
。 如果我在 R 之外寻找 /usr/local/bin/R
,我会看到:
$ ls -l /usr/local/bin/R
lrwxr-xr-x 1 mike admin 25 Nov 14 17:31 /usr/local/bin/R -> ../Cellar/r/3.2.2_1/bin/R
最终解析(2个符号链接)为:
/usr/local/Cellar/r/3.2.2_1/R.framework/Resources/bin/R
作为最终目的地。
所以在我的系统(Mac OS X)上,
file.path(R.home("bin"), "R")
是最准确的。
(经过编辑以反映这显然是特定于 Windows 的解决方案。)
在 Windows 上,我将使用以下内容,原因由 Henrik Bengtsson 在该主题的长线程开头附近讨论过。
file.path(R.home("bin"), "R")
这比在
file.path(R.home(), "bin", "R")
中此片段的“值”部分中提到的几个设置中使用
help(R.home)
更好:
详情:R主目录是R的顶级目录 正在运行安装。
[...]
价值:
给出 R 主目录或路径的字符串 特定组件。通常组件都是子目录 R 主目录的目录,但在类 Unix 中可能并非如此 安装。 [...]“模块”和 Windows 上的返回值 “bin”是子架构特定的位置。
@JoshOBrien 的解决方案效果很好。
然而,在 Windows 上,R 有时会做一件令人恼火的事情,即返回 Windows“短路径”(DOS 时代的遗留约定)。例如:
R.home()
# "C:/PROGRA~1/R/R-43~1.1" # <-- bits of the path is missing
解决方案normalizePath(R.home())
"C:\\Program Files\\R\\R-4.3.1"
# or if it swapped out \ for //, try this instead
gsub("\\\\", "/", normalizePath(R.home()))
"C:/Program Files/R/R-4.3.1"