【问题标题】:Error handling in R [duplicate]R中的错误处理[重复]
【发布时间】:2013-05-18 04:34:06
【问题描述】:

我正在运行一个 for 循环来使用 R 执行 Arima。我的 for 循环将更改 p、d、q 值并运行 arima 并将 p-d-q 值存储在数据框中。但是在这个过程中,一些 p-d-q 值抛出错误并且我的 for 循环正在停止。我不希望我的 for 循环在没有完成完整循环的情况下停止。是否可以不中断我的 for 循环并存储除错误之外的所有 p-d-q 值?

【问题讨论】:

标签: r


【解决方案1】:

您正在寻找try。 (或者,tryCatch

我假设你正在运行这样的东西:

  for (p in ..)
    for (q in...)
  ...

  mod <- arima(x, c(p,d,q))

如果是这样,只需将最后一行更改为

  mod <- try(arima(x, c(p,d,q)), silent=TRUE)
 # the silent is optional

但是,你最好这样做:

 pdq <- expand.grid(p, d, q)
 apply(pdq, 1, function(o) try(arima(x, o), silent=TRUE))

最后,请确保您不只是在钓鱼http://xkcd.com/882/

【讨论】:

  • 感谢您的回复里卡多。修改您的建议后,我正在使用以下代码
  • 代码可在skydrive.live.com/… 获得,但我仍在使用以下错误 fit$aic 中的错误:$ 运算符对原子向量无效此外:警告消息:1:在 log(s2) 中:NaN产生 2:在日志中(s2):产生的 NaN 3:在日志(s2)中:产生的 NaN 4:在日志(s2)中:产生的 NaN 你能帮我解决错误吗?
  • 错误告诉您$ 不适用于fit。我猜你分配了一些错误的东西来适应。请理解,要求某人筛选您的代码是一个相对较高的要求。相反,请考虑尝试自己解决问题,当您遇到特定问题时,将其缩小到有问题的部分或行,然后提出一个具体的问题。
  • 感谢您的回复里卡多。进一步缩小范围,我正在做的是将 Arima 结果存储在 fit 中,然后使用 fit 来获得多个结果,例如 AIC,预测未来响应并计算 MAPE。现在当我把 fit=try(Arima(..),silent=T).它正在处理 Arima 错误,但仍然是抛出错误,因为它没有为 fit$aic 获得合适的拟合值。所以我的问题是->我可以在“try”块中放置多行代码吗?如果是这样怎么办?我为每一行代码尝试了单独的尝试块,但我没有得到正确格式的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2015-02-18
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多