You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tryCatch规避双重循环错误遇Moment ratio报错求助

解决JohnsonFit参数验证时的"Moment ratio in error"错误

你的问题出在tryCatch的作用范围不对——当前代码把整个双重循环都包在tryCatch里,只要某一组i,j参数触发错误,整个循环就会直接终止。要实现"遇到不符合的参数时维持程序运行",得把tryCatch放到循环内部,针对每一组参数单独处理错误。

修改后的代码如下:

for (i in -2:2) {
  for (j in 0:6) {
    tryCatch({
      parms <- JohnsonFit(c(0, 1, i, j), moment = "use")
      sJohnson(parms)
      datos <- rJohnson(1000, parms)
      plot(density(datos))
    }, error = function(e) {
      # 出错时可打印错误信息,也可直接跳过
      message(sprintf("参数组合i=%d, j=%d出错: %s", i, j, e$message))
    })
  }
}

关键修改点:

  • 将tryCatch移到内层循环中,确保每一组(i,j)参数的处理独立,某一组出错不会中断其他组的执行
  • 添加error回调函数,可打印出错的参数组合和错误信息,方便排查无效参数
  • 移除外层多余的tryCatch包裹,让循环逻辑更清晰

补充说明:

"Moment ratio in error"错误表示传入的(i,j)对应的矩参数无法生成有效的Johnson分布。通过上述修改,程序会自动跳过这些无效组合,继续验证其他参数。如果需要记录有效参数,可在tryCatch的正常执行块中添加代码(比如将有效的i,j存入列表)。

内容的提问来源于stack exchange,提问作者BehSci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:22:45