【问题标题】:Running R from Mac OSX terminal从 Mac OSX 终端运行 R
【发布时间】:2017-11-04 07:16:07
【问题描述】:

我已经搜索了网络,但我仍然不清楚如何从 Mac 终端运行 R。我安装了 Rstudio 和独立的 R 应用程序。我以为我可以像使用“python”一样从命令行键入“R”,但这不起作用。是否有必要在我的 bash 配置文件中编辑 PATH?如果是这样,我该如何给出R的正确位置?

感谢您的帮助

收到cmets后编辑

所以,我正在运行 Sierra,当我在终端输入“r”或“R”时,我得到“-bash: R: command not found”。如果我在终端中输入“which R”,我不会得到任何输出。

这是“echo $PATH”的输出:/usr/local/heroku/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/ bin:/Users/samuelcolon/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/samuelcolon/.rvm/gems/ruby-2.1.0/bin:/Users/samuelcolon/。 rvm/gems/ruby-2.1.0@global/bin:/Users/samuelcolon/.rvm/rubies/ruby-2.1.0/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/本地/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/samuelcolon/.rvm/bin:/Users/samuelcolon/.rvm/bin

至于安装,我相信我前段时间是直接从cran.r-project.org下载的。我可以在我的应用程序中找到 GUI 并打开它—— 我有 3.13 版。有可能吗,我只安装了 R.app 但没有安装 R?也许这就是我在终端中输入“R”时收到“找不到命令”的原因?

一般来说,我一直在 RStudio 工作,但我仍然想从终端访问 R 并找到东西所在的位置。如果从第一方开始最容易,我可以删除并重新安装 R。我希望额外的细节有所帮助,我感谢您的回复。

【问题讨论】:

  • 使用 Rscript yourscript.R
  • 这取决于您安装它的位置/方式。如果您使用 homebrew,它将是 /usr/local/bin/Rscript your script.R
  • 我可以在终端中使用rR 启动R,也就是说,大写和小写命令都可以。试试which R。它返回什么?你在塞拉之下吗?升级到 Sierra 后,我有 some problems with R,然后升级了 R。
  • 您没有提供任何信息可以让人们帮助您。 R 在应用程序和终端级别上都可以在 macOS 上正常运行。你从哪里得到R?你是怎么安装的?你的PATH 是什么样的?您是否查看过它是否在/Library/Frameworks/R.framework/Resources/bin/R 中以及是否有指向/usr/local/bin/R 的符号链接? RStudio 很可能找到了它(不过你没有提到这个关键事实)。它说 R 在哪里?
  • @hrbrmstr 我同意 hrbrmstr 的 cmets sjc725。您能否通过单击问题下方的“编辑”字样为您的问题添加更多详细信息。添加您可以添加的内容。您是在终端中输入 R 还是其他应用程序可以帮助我更好地理解。如果您现在可以使用 R,请让其他人知道,以便我们知道您的问题已解决。

标签: r bash macos


【解决方案1】:

不熟悉终端和 Bash 的人的答案。

我已经从 R.org cran 站点完成了 R 的全新更新安装,作为寻求问题答案的一部分。

我发现这个最新的安装版本 3.4.0 安装了 R 以便在终端中访问,并且还安装了 R.app 作为包的一部分。

据我了解,阅读支持文档,如果您有旧版本的 R,它会更新它。但是它不会更新由 anaconda 包安装的 R 安装。


R 文件存储在哪里?

我只能假设全新安装最新的 R,R 将在终端中为您工作。

要了解正在访问的 R 文件在哪里 - 在启动 R 后在终端中,在 R.app 中,键入:

>R.home()


以我为例:

在 R.app - R 版本 3.4.0 在顶层目录(不是我的用户文件夹)中访问:

R.home()
[1] "/Library/Frameworks/R.framework/Resources"

在终端中 - 在 Anaconda 包中访问 R 版本 3.3.2,同样在顶级目录中。

R.home()
[1] "/anaconda/lib/R"

所以我有两个不同版本的 R,并且终端访问 R.app 的不同版本。


如何确保在终端中访问的版本与在 R.app 中访问的版本相同?

对于熟悉 bash 以及整个 bash 命令系统如何工作的人,我确信有一个构造良好的命令。这里都是一些新手解决方案。

-

• 第一个解决方案:

我可以更新 anaconda 版本,但是,我不希望 anaconda 包的其他元素依赖于这个旧版本的 R。对于那些还不熟悉终端和 bash 的人来说,这不是一个新手解决方案。

-

• 第二种解决方案:

这个解决方案来自 mko。它提供了一次性使用的解决方案。从上面的结果中,进一步检查目录结构以找到这个 R 文件。

找到重要的 R 文件使我能够编辑 R.app 中显示的上述路径的扩展名。所以添加/bin/R进入

/Library/Frameworks/R.framework/Resources/bin/R

输入并按回车将从此版本启动 R。

或者,您可以在 GUI Finder 中找到此文件和图标,根据上述结果,双击它,它将打开终端和一个运行 R 的会话。简单!

您也可以为其创建一个别名并将其放在您的桌面上,以便将来开始使用。

-

• 第三种解决方案:

我认为我的最后一个解决方案可能是最好的,添加到 mko 的解决方案中。做一个别名。

在终端的主目录中,我使用 nano 文本编辑器打开 .bash_profile。 (如果您还不知道如何执行此操作,那么最好不要使用此解决方案。)

然后我在这个 env 文件中添加这一行。

alias Rv340='/Library/Frameworks/R.framework/Resources/bin/R'

然后我保存更改并退出此终端会话。然后我打开一个新的终端窗口。 (这样对上述 env 的更改将合并到新的终端会话中)。

然后当我输入别名时:

Rv340

我想要的 R 版本打开。

您可以为“Rv340”选择不同的别名。

-

• 第四个解决方案:

在终端中打开相同版本的 R 的第二个更永久的解决方案如下。

复制 R.app 中显示的路径以响应上面的 R.home() 命令,然后将该路径添加到 .bash_profile 中的 PATH 中。 (如果您还不知道如何执行此操作,请忽略此解决方案。)请按以下步骤操作。

export PATH="/Library/Frameworks/R.framework/Resources:$PATH"

据我了解,这可以确保 bash 在这里查找 R(以及其他任何内容),然后转到 PATH 中的其他路径。由于这会将此路径添加到 $PATH(一个环境变量)的开头,因此 bash 首先会在这里查找它首先找到较新版本的位置,然后停止查找。

在了解 .bash_profile 中设置的环境中的 PATH 时,以下两个链接很有帮助。

About PATH.

How to correctly add a path to PATH.

这个解决方案可能会与 anaconda 对 R 的调用混为一谈。我尚未对此进行检查。

【讨论】:

【解决方案2】:

首先,您必须启动终端应用程序。您可以使用内置的 Terminal.app,也可以使用替换。我最喜欢的是 iTerm2

https://www.iterm2.com

然后,您只需打开终端窗口并运行 R。如下所示:

玩得开心!

【讨论】:

  • 不错!补充长答案。
  • 我认为问题是在命令行上找不到“R”,无论是终端还是 iTerm。说“打开终端并输入 R 然后 RET”不会解决这个问题。
  • 你有没有看到人们发布答案后有问题的更新;)不要对整个互联网投反对票,只需添加一些可以解决问题的内容;)
【解决方案3】:

在我的 MacBook (MacOS BigSur) 上安装 R-4.0.3.pkg 时遇到了同样的问题。可以打开 R.app 到笨重的 R GUI,但在终端中输入“R”不起作用。

事实证明,一个 R 可执行文件位于:/Library/Frameworks/R.framework/Versions/4.0/Resources/bin/R

所以我将此别名添加到我新创建的 .zshrc 脚本中:

alias R '/Library/Frameworks/R.framework/Versions/4.0/Resources/bin/R'

现在当我输入 R 时,它会打开...我发誓这一切在早期版本中都是无缝发生的。

【讨论】:

  • 我认为我们需要在R之后加上等号,即alias R='/Library/Frameworks/R.framework/Versions/4.0/Resources/bin/R'
  • 这绝对没有必要,除非您的 R 安装或您的 PATH 已损坏。解决这个问题,而不是创建骇人听闻的解决方法,因为它会产生其他负面后果。
【解决方案4】:

目前 CRAN 的 R 安装包中存在一个错误,导致它无法正确安装指向 R 和 Rscript 的符号链接以供命令行使用。我刚刚通过检查 4.0.5 安装包中的 postflight 脚本验证了这一点。这仅影响 20 及以上的 MacOS 系统版本(您可以通过uname -r 查询)。

我在这里包含了更多信息,以及“正确”修复应该是什么:手动创建指向 /usr/local/bin 的符号链接,指向 RRscript 二进制文件本身。如果这是当前的挑战,那么这将是创建别名或以各种方式操纵PATH 的更好解决方案,因为这是安装包打算做的事情(并且可能很快会再次发生)。

R: command not found

简而言之,如果这是问题所在,那么 Ashkan Mirzaee 直接创建符号链接的答案 (https://stackoverflow.com/a/67202173/2093929) 在形式上是正确的,但可能没有正确的链接命令。 4.0.5 包打算改为使用:

    mkdir -p /usr/local/bin
    cd /usr/local/bin
    rm -f R Rscript
    ln -s /Library/Frameworks/R.framework/Resources/bin/R .
    ln -s /Library/Frameworks/R.framework/Resources/bin/Rscript .

【讨论】:

  • 我刚刚从 CRAN 二进制包中安装了 R 版本 3.6.3,并且没有自动创建符号链接。这个解决方案对我有用
【解决方案5】:

您可以创建从 R 和 Rscript 二进制文件到 /usr/local/bin 的符号链接,以将它们添加到 PATH:

sudo ln -s /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R /usr/local/bin
sudo ln -s /Library/Frameworks/R.framework/Versions/Current/Resources/bin/Rscript /usr/local/bin

现在 which R 应该返回 /usr/local/bin/R 并且您可以使用 R。

【讨论】:

  • 这绝对没有必要:安装 R(通过官方包和 Homebrew)会自动生成这些链接。如果它们不存在,则说明您的安装已损坏,您应该从头开始重新安装 R,而不是乱用它。此外,您不应将硬编码版本链接到 /usr/local/bin。链接Versions/Current 符号链接路径。
  • 官方包4.0.3版本不创建链接。无论如何,该命令不会强制链接,如果链接/文件已经存在,则将被忽略。修复了硬编码版本。谢谢!
  • 我刚刚检查过:官方 R 包安装程序 4.0.3 确实创建符号链接作为其飞行后构建步骤的一部分。如果没有,说明您的系统有问题。
  • 你卸载了以前的 R 并删除了 /usr/local/bin/R 和 /usr/local/bin/Rscript 吗?您可能有旧版本的链接。
  • 不,我检查了安装包源。
【解决方案6】:

在 macOS 上以管理员权限打开 RStudio 的简单方法:

  1. 转到应用程序,然后右键单击 RStudio
  2. 选择“显示包装内容”
  3. 转到目录/MacOS
  4. 现在打开终端(在 bash 模式下)。键入 sudo 并将 RStudio.exec 拖到终端并按 ENTER

现在 RStudio 将拥有管理员权限!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2011-05-06
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2010-11-19
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多