处理drm产生的错误

时间:2017-11-09 06:45:52

标签: r error-handling drc

我坚持这个问题而且我的R能力显然不足以解决它。希望有人可以帮助我。

我目前正在编写一个使用“drc”软件包“drm”函数的脚本。我想从drm使用不同给定函数生成的最佳模型中获取EC10,20和50值。我想为数据集实现一个解决方案,这些数据集不会与所有或部分函数聚合(例如,如果没有,则打印出“数据集不会收敛”)。使用tryCatch处理错误不起作用。它只捕获“drmOpt”产生的错误而不是“optim”产生的错误,从而停止脚本。
这是我在没有尝试或tryCatch的情况下得到的错误:

  

optim中的错误(startVec,opfct,hessian = TRUE,method = optMethod,control = list(maxit = maxIt,:     非有限的有限差分值[2]
  drmOpt出错(opfct,opdfct1,startVecSc,optMethod,constrained,warnVal,:     融合失败

使用try或tryCatch我只得到第一个错误 可以使用以下代码重现该错误(LL.2产生错误,LL.3不产生错误):

library(drc)
library(data.table)
data <- data.table(Dose = c(0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.0,  0.5, 0.5,  0.5,  0.5,  3.0,  3.0, 3.0,  3.0, 9.0,  9.0,  9.0,  9.0, 27.0, 27.0, 27.0, 27.0, 81.0, 81.0, 81.0, 81.0), Value = c(1, 3, 2, 7, 5, 7, 6, 0, 2, 2, 4, 6, 4, 5, 4, 2, 2, 4, 5, 5, 4, 4, 3, 1, 6, 5, 4, 2))

data.LL.2 <- drm(Value ~ Dose, data = data, fct = LL.2(), type = "continuous")
data.LL.3 <- drm(Value ~ Dose, data = data, fct = LL.3(), type = "continuous")

data.LL.2.try <- tryCatch(drm(Value ~ Dose, data = data, fct = LL.2(), type = "continuous"), error = function(e) "No convergence")
data.LL.3.try <- tryCatch(drm(Value ~ Dose, data = data, fct = LL.3(), type = "continuous"), error = function(e) "No convergence")

我不想调整数据集或更改函数,因为脚本应该与循环中的许多数据集一起使用,并且许多函数不能单独处理。在这种情况下,输出“不与该功能汇合”是有价值的信息。

非常感谢你。

0 个答案:

没有答案