从Mac OSX终端运行R.

时间:2017-06-02 19:43:15

标签: r bash macos

我在网上搜索过,我还不清楚如何从Mac终端运行R.我安装了Rstudio和独立的R app。我以为我可以像命令行一样在“python”中输入“R”,但这不起作用。是否有必要在我的bash配置文件中编辑PATH?如果是这样,我如何给出R的正确位置?

感谢您的帮助

收到评论后编辑

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

以下是“echo $ PATH”的输出:/usr/local/heroku/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/斌:/用户/ samuelcolon /蟒蛇/斌:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/samuelcolon/.rvm/gems/ruby-2.1.0/bin:/用户/ 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.我希望额外的细节有所帮助,我很欣赏这些回复。

6 个答案:

答案 0 :(得分:12)

那些不熟悉Terminal和Bash的人的答案。

我已经从R.org网站上做了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"

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

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

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

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

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

-

•第一个解决方案:

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

-

•第二个解决方案:

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

icon in finder

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

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

输入并按回车将从此版本开始R.

或者,可以在GUI Finder中找到此文件和图标,由上述结果引导,只需双击它,它就会打开终端并为您运行R会话。简单!

还可以创建它的别名并将其放在桌面上以便日后启动。

-

•第三个解决方案:

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

在终端I的主目录中,使用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(一个env变量)的开头,因此bash首先在此处查找首先找到较新版本的内容,然后停止查找。

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

About PATH.

How to correctly add a path to PATH.

这个解决方案可能会因为anaconda调用R而陷入困境。我还没有检查过这个问题。

答案 1 :(得分:5)

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

https://www.iterm2.com

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

enter image description here

与R玩得开心!

答案 2 :(得分:2)

在MacBook(MacOS BigSur)上安装R-4.0.3.pkg时遇到了同样的问题。可以在笨拙的R GUI中打开R.app,但是在终端中键入“ 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时,它会打开...我发誓这一切在早期版本中都是无缝发生的。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

您可以创建从 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。

答案 5 :(得分:0)

目前 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 .