查看 RStudio 正在使用的“R”路径的命令

问题描述 投票:0回答:2

原始问题

这看起来很简单,之前可能已经被问过,但我无法通过搜索找到它。


我安装了几种口味的

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")
是最准确的

r linux path exec
2个回答
37
投票

(经过编辑以反映这显然是特定于 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”是子架构特定的位置。


0
投票
在 macOS 和 Linux 上

@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"
    
© www.soinside.com 2019 - 2024. All rights reserved.