R 3.4.1在Mac上的控制台界面非常缓慢

17
我已将R从3.3.3升级到3.4.1,但发现即使R没有使用大量资源,直接在R控制台中输入文本也变得非常缓慢。我观察到这种行为在最近几个版本的macOS Sierra(10.12.6等)上运行时都会出现。
值得注意的是,执行R函数并不特别缓慢。我大多数时候使用Textmate 2将代码传递到控制台,用这种方式传递的代码可以无延迟地运行。
我做了广泛的搜索,但没有找到其他人报告这个问题。我在两台不同的Mac上发现了这种行为:2013年款13英寸Macbook和2017年款15英寸Macbook,且遇到了相同的问题。
我是否错过了解决此问题的简单方法?

问题从一开始就出现了吗?是某个库导致了卡顿吗?看了一下,语法高亮似乎是一个可能的罪魁祸首,但在基本的 R 中不应该是问题。你们都在运行 64 位版本吗? - Jordan
R版本3.4.1(2017-06-30) 平台:x86_64-apple-darwin15.6.0(64位) 运行在:OS X El Capitan 10.11.6 - bill999
1
@bill999 我在想这可能是操作系统的问题。无论如何,联系 r-devel@r-project.org 或许值得一试。 - Joseph Wood
1
这可能是一个Sierra的问题。R只官方支持El Capitan。我曾经在一台旧的13英寸Macbook上(运行Sierra)遇到过这个问题,现在已经无法使用了。我用一台新的Macbook替换了它,但问题仍然存在。不幸的是,降级是不可能的。我认为这个问题与R 3.4.0版本开始远离Apple有关,因为Apple不愿意支持开源。话虽如此,我甚至尝试编译R自己,但结果相同。 - Electioneer
1
@bill999 这里没有什么可以做的。请向 R-devel 邮件列表报告此问题。 - Roland
显示剩余4条评论
4个回答

8
我找到的唯一解决方法是将R版本回滚至3.3.3版,这是在R开始使用Clang和GNU Fortran编译可执行文件之前的最后一个版本(https://cran.r-project.org/bin/macosx/了解更多信息)。
这不是最优解决方案,因为我必须返回到我使用的某些软件包的旧版本(这进一步复杂化了对有问题依赖项的正确版本的寻找)。我一直在查看r-devel线程,但没有看到关于此的讨论,这让我感到惊讶,因为我知道我不可能是唯一处理此问题的人。如果我获得任何其他信息,我将联系r-devel团队并在此处进行更新。
更新
就此问题的讨论已经确定是与macOS R GUI有关。不幸的是,R GUI开发人员已经意识到了这个问题,但它没有被列为错误。开发人员建议清除控制台-对于我来说不可行,因为问题出现得太快。
我想到了一个更好的解决方案,虽然有点奇怪。我意识到问题出在GUI而不是R上,所以你可以使用旧版本的GUI(它们可以从R macos development page中获取)。我希望能够使用GUI version 1.69,但这会立即导致崩溃。另一方面,版本1.68确实可以工作。
我在电脑上安装了 R 3.4.1,然后下载了 GUI 版本 1.68 的二进制文件并将其复制到应用程序文件夹中(您不必这样做,但如果您这样做,请确保重命名该程序,否则您将替换 R)。我认为通过 GUI 打开了 R 并加载了 R 3.4.1 在 R Mac GUI 版本 1.68 上。到目前为止,它似乎运行正常,证实问题确实在 GUI 中。

2
我可以确认你并不是唯一一个遇到这个问题的人。尽管我使用的是El Capitan,但我也遇到了同样的问题。最终我转而使用RStudio,它能够正常工作(我认为这只是R Gui 1.7在Mac上与R 3.4一起发布时存在问题)。 - plannapus
我不喜欢使用RStudio(它并不差,但我更喜欢Textmate),但你的建议启发了我尝试使用不同版本的macOS GUI加载R 3.4.1。 - Electioneer

6

实际上,这个问题很早以前就出现了(在R3.1.2版本发布时),当开发人员开始使用更新的Xcode版本(我认为他们从v.5升级到了v.8及以上)时。当时Simon告诉我这是Xcode和苹果的问题,所以他们无法解决。然而,他用旧版Xcode强制编译,避免了该问题直到R3.4版本。我猜他们现在不能再使用这个解决方法了。


感谢您分享这些信息。这似乎是开源软件和苹果现在普遍存在的问题。Inkscape在macOS上有一个问题,该程序的开发人员也表示只能通过修改xcode来解决。我想出的解决方法是在最新版本的R之上安装旧版本的GUI,并在我想使用R控制台时启动该程序(我在下面的帖子中描述了这一点)。GUI只是寻找安装的任何版本的R并与其交互。它不够优雅,但它有效。 - Electioneer
不幸的是,我无法在High Sierra上启动1.68版本,这意味着我只能使用终端中的R。虽然不是最好的选择(我不喜欢Rstudio)... - Yan Alperovych

1
可能的解决方案: 尝试运行:rm(list = ls(all.names = TRUE)),这将从您的R控制台中删除所有内容,包括隐藏对象。 然后运行.rs.restartR(),它将重新启动R。希望任何阻塞程序的东西都会消失。

你也可以尝试运行 gc(),这应该会提示 R 将一些内存返回给操作系统。虽然可能性不大,但也不会有什么损失。 - Jordan
我尝试了gc()rm(...),但不幸的是都没有起作用。由于某种原因,.rs.restartR()也没有起作用。我关闭了它,然后重新打开了它。 - bill999
这确实可行,但是我们不得不这样做很烦人。我希望能够在不使用此类黑客技巧的情况下帮助解决此问题,但不幸的是超出了我的能力范围。 - Electioneer

-2

你试过用RStudio吗?我强烈推荐这个图形用户界面来进行R编程。

如果你需要更快的运行速度,可以考虑使用修改后的矩阵计算方法来使用R。例如,你可以参考我的教程,在这里我介绍了如何在R中使用openBLAS:http://pacha.hk/2017-07-12_r_and_python_via_homebrew.html


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