【问题标题】:R terminates with error message: This application has requested the Runtime to terminate it in an unusual wayR 以错误消息终止:此应用程序已请求运行时以不寻常的方式终止它
【发布时间】:2011-12-23 13:52:40
【问题描述】:

据我随机看到的,我有相当大的代码块有时会中断,并显示错误消息:

此应用程序已请求运行时终止它 不寻常的方式。请联系应用程序的支持团队了解更多信息 信息。

一些研究表明,当调用 abort 时,这似乎是 Windows/C runtime 消息(例如,请参阅此 link)。这让我抓狂:因为这不是R 抛出的错误,所以我不知道去哪里找。有没有人知道Rdata.table(如果有可能一个包在C runtime [??] 中调用abort 函数)调用abort 函数的位置?

这里有一些进一步的信息:

  1. 问题与机器无关:我在两台不同的机器上尝试过,有时两台机器都会崩溃。
  2. 问题与 R 版本无关:我用 2.13.12.13.22.14.0 尝试过。
  3. 两台机器都运行 Windows 7(64 位)。
  4. 问题似乎与我的data.tables 的大小有关。当我人为地减小较大的data.table 的大小时,代码运行起来就像一个魅力。然而,有趣的是,一台机器的 RAM 比另一台机器大得多(16 GB 与 6 GB)。然而,这个额外的 RAM 并没有真正的帮助,至少看起来如此。
  5. 该问题不可重现,并且在我的代码中的不同部分中断。我注意到这一点是因为我的代码在 Sweave 文档中运行,所以我可以在 R 崩溃后打开 .tex 文件,并且它总是停在不同的位置。然而,它似乎总是在调用data.table 操作时(但这并不意味着很多,因为我的代码严重依赖data.table)。然而,即使我不调用 Sweave,而只是运行代码,它有时也会中断。所以它似乎与 Sweave 无关。
  6. 这与我使用的编辑器无关。我使用RStudio,但通过在纯 R 命令窗口中运行代码来重现此行为。

这基本上是我想出的所有可能的解释。因此,如果有人对这个错误可能来自哪里或我还能检查什么有任何提示,那就太好了。

PS:接下来的几天我不会在我的机器上,所以如果我没有立即给出反馈,我希望你能原谅我。尽管如此,我还是想在圣诞节前发布这个问题,否则我无法享受我心爱的R 的痛苦,我坐在家里,不想治愈它......

更新

我进一步研究了这个问题,过了一会儿,我得到了一个相当小的例子,data.table 打破了我的 R 会话。如果此问题已解决并且它解决了此处描述的 R 崩溃(请注意,这是一个很大的问题,因为我在 data.table list 上发布的示例只是中断了我的 R 会话并且没有以我在此处描述的错误消息结束它),我会在这里写一个答案并接受它。

【问题讨论】:

  • 一个可重现的例子在这里真的非常有帮助。不过,我明白在这种情况下可能会很困难。
  • 我完全同意,但我只是不明白如何生成一个,因为代码在代码的不同部分中断,并且代码似乎没问题,因为它有时会运行。此外,错误消息让我假设我的例程中没有一行代码损坏,而是我面临的情况并没有很好地定义。这就是我希望专家能提供帮助的原因:R 或者可能是包调用 abort 什么时候?还是我完全错了,这是一个操作系统问题,只有在我运行 R 代码时才会发生,因为这是 OS 唯一一次达到极限?
  • 老实说,我不知道,但是通过一个可重现的示例,我们可以消除一些可能的原因。给包维护者发邮件可能是值得的,如果发送失败,请发送 R-devel 邮件列表。
  • data.table 的版本是什么?
  • @RYogi 我目前安装的版本是1.7.7。但我也遇到过这个错误,旧版本的 data.table 也发生了。

标签: r data.table


【解决方案1】:

突然,rvest 包中出现了同样的错误:

 raw_HTML %>% html_nodes(xpath=HTML_table_xpath)

切换到 R 3.3.1 64 位解决了这个问题(现在仍然使用 32 位 R)。对于某些人来说,这可能是一种解决方法。就我而言,rJava 包需要 32 位 R :(

如果它对任何人有帮助:

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] rvest_0.3.2         xml2_1.0.0          xts_0.9-7           zoo_1.7-13          doParallel_1.0.10   iterators_1.0.8    
 [7] foreach_1.4.3       plyr_1.8.4          jsonlite_0.9.22     futile.logger_1.4.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.5          lattice_0.20-33      codetools_0.2-14     XML_3.98-1.4         R6_2.1.2             grid_3.3.1          
 [7] futile.options_1.0.0 magrittr_1.5         mail_1.0             httr_1.2.0           stringi_1.1.1        curl_0.9.7          
[13] lambda.r_1.1.7       tools_3.3.1          stringr_1.0.0        selectr_0.2-3   

【讨论】:

  • 感谢您发布此信息。我在使用 32 位 R 的计算机上使用 readrtidyrdplyr。更新到 64 位,最新版本的 Rstudio 解决了这个问题
【解决方案2】:

好的,这基本上是data.table 的一个难以检测的问题,应该在版本 1.7.8 中修复。有关详细信息,请参阅NEWS 文件。

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多