【问题标题】:Command to see 'R' path that RStudio is using用于查看 RStudio 正在使用的“R”路径的命令
【发布时间】:2016-02-21 06:06:34
【问题描述】:

原始问题

这似乎很简单,以前可能有人问过,但我无法通过搜索找到它。


我安装了几种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") 是最准确的

【问题讨论】:

  • 试试Sys.getenv('R_HOME')R.home()(更快)
  • 你也可以去Tools和Global Options,它会是General的第一行
  • 例如在 Linux 上的 R/RStudio 中,system("type R")。在我的 Linux 上,它显示 R is /usr/bin/R
  • @JorisMeys 这不是 OP 的问题。
  • 旁注:在我的 Linux 上,file.path(R.home("bin"), "R") 不会返回 RStudio 当前使用的可执行文件的路径。这个命令system("type R | xargs readlink") 可以。

标签: r linux path exec


【解决方案1】:

(经过编辑以反映这显然是特定于 Windows 的解决方案。)

在 Windows 上,我将使用以下内容,原因是 Henrik Bengtsson 的 discussed here 在该主题的长线程开头附近。

file.path(R.home("bin"), "R")

这比在help(R.home) 的这个 sn-p 的“值”部分中提到的几个设置中使用 file.path(R.home(), "bin", "R") 更好:

详情:

R 主目录是 R 的顶级目录 正在运行安装。

[...]

价值:

给出 R 主目录或路径的字符串 特定的组件。通常组件都是子目录 R 主目录,但在类 Unix 中可能不是这种情况 安装。 [...]“模块”和 Windows 上的返回值 “bin”指向子架构特定的位置。

【讨论】:

  • 但它没有给出当前使用的路径。在我的机器上,它给出了/usr/lib/R/bin/R,这是不正确的。我的默认 R 二进制文件位于 /usr/bin/R。如果我将其更改为/usr/bin/R.old,RStudio 将无法运行。
  • @Pascal 你能说得更具体点吗?你的意思是它不指向Rcmd.exeRgui.exeRterm.exe,如果这些是被使用的?如果是这样,我同意,但是(在这里猜测)认为 OP 只是想要找到 RStudio 使用的 R 版本的路径。但是,如果您说它给出的路径不正确,我将不得不不同意(直到您向我展示一个示例)。
  • 我只是说我的RStudio使用/usr/bin/R,而file.path(R.home("bin"), "R")指向/usr/lib/R/bin/R
  • @Pascal 我已经很久没有在 *NIX 上使用 R 了,但有没有可能/usr/bin/R 是一个最终在/usr/lib/R/bin/R 启动可执行文件的脚本? (我会检查自己,但现在无法访问非 Windows 机器。)
  • @Pascal 好吧,如果 /usr/bin/R 不是一个 shell 脚本,并且如果这就是 Rstudio 实际启动的内容,那么我对发生的事情几乎一无所知。它当然似乎不符合?R.home 的记录行为(参见"Details" 部分),也不符合我的回答中链接的线程中Simon Urbanek 的cmets 的一般基调。哦,好吧,我晚上休息。
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2015-04-02
  • 2019-08-25
  • 2017-06-16
  • 1970-01-01
  • 2016-04-18
相关资源
最近更新 更多