在Mac OSX终端上运行R

22

我在网上搜过,但还是不清楚如何从Mac终端运行R。我已经安装了Rstudio和独立的R应用程序。我以为只需要像使用“python”一样,在命令行中键入“R”,但这行不通。是需要编辑我的bash配置文件中的PATH吗?如果是,我该如何给出R的正确位置?

谢谢任何帮助。

收到评论后的编辑

所以,我正在运行Sierra,当我在终端中输入“r”或“R”时,我得到“-bash:R:找不到命令”的提示。如果在终端中键入“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/local/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是最简单的方法,我也可以这样做。我希望额外的细节有所帮助,感谢回应。


2
use Rscript yourscript.R - Vitalijs
1
这取决于您安装它的位置/方式。如果您使用了 homebrew,那么它将是 /usr/local/bin/Rscript your script.R - Mark Setchell
1
我可以在终端中使用rR启动R,即大小写命令都可以工作。尝试which R。它返回什么?你是在Sierra下吗?我在升级到Sierra并升级R后遇到了一些R问题 - user7843120
1
你没有提供任何信息,使人们能够帮助你。在macOS上,R在应用程序和终端级别上都可以正常运行。你从哪里获取了R?你是如何安装它的?你的PATH是什么样子的?你是否查看了/Library/Frameworks/R.framework/Resources/bin/R中是否有它以及是否有一个符号链接到/usr/local/bin/R?RStudio可能已经找到了它(尽管你没有提到这个关键事实)。R在哪里呢? - hrbrmstr
sjc725,我很想知道我发布的新答案是否有助于解决您的问题和疑问。您提供的额外信息确实有所帮助。谢谢。 - Cam_Aust
显示剩余3条评论
6个回答

26

针对不熟悉终端和Bash的用户的答案。

为了回答你的问题,我从R.org cran网站进行了全新的更新安装。我发现这个最新版本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不同。


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

对于熟悉bash和整个bash命令系统工作方式的人来说,我相信有一条构建良好的命令。但对于初学者,以下是一些简单的解决方案。

-

• 第一个解决方案:

我可以更新anaconda版本,但我宁愿不这样做,因为anaconda软件包的其他元素可能依赖于这个较旧版本的R。对于尚未熟悉终端和bash的人来说,这并不是一个很简单的解决方案。

-

• 第二个解决方案:

此解决方案来自mko。它提供了一种单次使用的解决方案。通过上面的结果,并进一步检查目录结构以找到此R文件。

finder中的图标

找到相关的R文件后,可以编辑上述路径的扩展名以在R.app中添加/bin/R。

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

从这个版本开始,输入并按回车将启动R。

或者,在GUI Finder中找到该文件和图标(由上述结果引导),只需双击它,它将打开Terminal,并为您运行带有R的会话。 很容易!

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

-

• 第三种解决方案:

我认为我的最后一个解决方案是最好的,可以与mko的解决方案相加。 创建一个别名。

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

然后在此环境文件中添加该行。

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中设置的env中的PATH时,以下两个链接很有帮助。 关于PATH。 如何正确地将路径添加到PATH中。 这个解决方案可能会影响anaconda对R的调用。我还没有检查过这个问题。

1
在我的bash_profile中添加了你建议的内容--export PATH="/Library/Frameworks/R.framework/Resources:$PATH",现在我可以成功地从终端启动R。 - sjc725
@Cam_Aust:我有一个R库(evently),它安装在这里:/Library/Frameworks/R.framework/Resources。但是我也在/Documents文件夹中拥有相同的目录(evently),这是我从github上获取的。你知道我怎样才能强制R运行来自这个本地目录(/Documents)的文件吗? - mOna
1
除了上面提到的4种方法之外,可以将路径重写为文档文件夹,或在R中将该文件夹设置为工作目录。我最近刚换了新笔记本电脑,对路径一直感到困惑,因此不能确定自己的理解是否正确。更加专注于编码的其他人可能能够回答得更好。如果不行,我建议联系包的维护者(evently),这个文档链接似乎给出了维护者信息。你可以在GitHub文档中找到联系邮箱地址。 - Cam_Aust
@Cam_Aust:我会尝试联系他们。谢谢! - mOna

13

首先,您需要启动终端应用程序。您可以使用内置的 Terminal.app,或者您可以使用 iTerm2 进行替代。我的最爱是 iTerm2。

https://www.iterm2.com

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

输入图像描述

享受 R 的乐趣吧!


不错!补充了长答案。 - Cam_Aust
4
我认为这个问题是说无法在命令行中找到“R”,无论是Terminal还是iTerm。说“打开终端,然后键入R再按回车”不能解决这个问题。 - Paul
你看到了吗?人们发布答案后,问题进行了更新。与其对整个互联网进行贬低,不如添加一些解决问题的内容。 - Oo.oO

2

在我的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' - Cm7F7Bb
这绝对不是必要的,除非你的R安装或PATH出现了问题。相反,修复它而不是创建hacky解决方法,因为它会产生其他负面影响。 - Konrad Rudolph

1
目前CRAN的R安装包存在一个错误,导致它不能正确地安装用于命令行使用的R和Rscript的符号链接。我通过检查他们4.0.5安装包中的postflight脚本来验证了这一点。这只影响20及以上版本的MacOS系统发布(您可以使用uname -r进行检查)。
我在此处提供了更多信息,以及“正确”的修复方法:手动创建指向/usr/local/bin的符号链接,这些符号链接指向RRscript二进制文件本身。如果当前的问题是这个,那么这将是一个比创建别名或以各种方式操纵PATH更好的解决方案,因为这是安装包打算做的事情(并且很快可能会再次实现)。 R: command not found 简而言之,如果这是问题的原因,则Ashkan Mirzaee的答案(https://dev59.com/glcP5IYBdhLWcg3wf54G#67202173)直接创建符号链接的形式是正确的,但可能没有正确的链接命令。相反,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,但符号链接没有自动创建。这个解决方案对我有用。 - Johann

0
你可以从R和Rscript二进制文件创建符号链接到/usr/local/bin,以将它们添加到路径中:
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 符号链接路径。 - Konrad Rudolph
官方软件包版本4.0.3不会创建链接。无论如何,如果链接/文件已经存在,则该命令不会强制创建链接并将被忽略。修复了硬编码版本。谢谢! - Ashkan Mirzaee
我刚刚检查了一下:官方的 R 捆绑安装程序 4.0.3 在其后期构建步骤中确实创建了符号链接。如果没有创建,则表示您的系统存在某些问题。 - Konrad Rudolph
你卸载了之前的R并删除了/usr/local/bin/R和/usr/local/bin/Rscript吗?你可能还有旧版本的链接。 - Ashkan Mirzaee
不,我检查了安装捆绑器源代码。 - Konrad Rudolph

-1

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接