【问题标题】:Error thrown within ddply crashes Rddply 中引发的错误使 R 崩溃
【发布时间】:2013-11-12 15:35:24
【问题描述】:

我遇到了一个问题,当提供的函数抛出错误时,plyr 总是崩溃

> require(plyr)
Loading required package: plyr
Warning message:
package ‘plyr’ was built under R version 3.0.2 
> df <- data.frame(group=c("A","A","B","B"), num=c(11,22,33,44))
> ddply(df, .(group), function(x) {x})
  group num
1     A  11
2     A  22
3     B  33
4     B  44

> ddply(df, .(group), function(x) {stop("badness")})
called from: (function ()
{
     .rs.breakOnError(TRUE)
})()
Error in .fun(piece, ...) : badness
Browse[1]>
# Crashes immediately

是否有人知道为什么会发生这种情况以及如何防止它(当然除了避免错误)?

(我在平台上运行 R 3.0.1:i386-w64-mingw32/i386(32 位)到 Windows 7 下的 RStudio 0.98.274)

编辑 作为一种解决方法,我将所有错误重定向为避免崩溃的警告

ddply(df, .(group), function(x) tryCatch(stop("badness"), error = function(e) warning(e)) )

如果我设法调整 plyr 和 R 版本,将报告这里发生的情况。

【问题讨论】:

  • FWIW 我无法在 OSX 下的 R 3.0.1 中复制它。
  • 我也不能在 ubuntu 和 R 3.0.2 上运行您在干净的 R 会话中只运行这四个命令吗? R --vanilla
  • @Justin 这是一个新的会话,所以没有其他命令,虽然我意识到我忽略了加载 plyr 后显示的警告消息,现在编辑问题以反映这一点。
  • 也许首先要尝试的是,鉴于警告将升级到 3.0.2?
  • @Justin 如果可以的话当然会,但由于工作中的网络安全,不能。但我正在努力获得一个以某种方式保证与 3.0.1 兼容的 plyr 版本......

标签: r dataframe plyr


【解决方案1】:

我在 R 3.1.1 和 plyr 1.8.1 上遇到了同样的问题。

为了修复它,我只是从源代码重新安装了包。

install.packages("plyr", type = "source")

【讨论】:

  • 实际上我只是重新安装了二进制文件,看看是否真的是问题所在,但我无法重现该错误。因此,如果您遇到这些崩溃,只需从源代码或二进制文件重新安装 plyr,看看它是如何运行的。
  • 我遇到了一个与 plyr 完全不同的错误,这个解决方案也解决了这个问题。一定是“正常”安装的版本有问题!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 2023-04-08
  • 1970-01-01
  • 2020-02-25
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多