我必须在元素列表上运行一个函数(在R中).该函数通过最大似然估计模型的参数.要运行该函数,我需要给出一组初始参数值,然后由算法优化.
那么这是我的问题:
我想在每次对列表的每个元素执行函数时随机化初始参数值.我用函数runif()来做.但是,并非所有初始参数的组合似乎都有效(它会产生错误).在这种情况下,我想一次又一次地执行列表中该元素的函数,尝试不同的起始值,直到我得到使函数工作的初始参数值的组合.只有这样循环才能继续到列表的下一个元素.
你能否告诉我一些如何解决这个问题的想法?
非常感谢提前.
蒂娜.
在tryor中包装生成错误的调用tryCatch.
在伪代码中:
out <- vector(mode = "list", length = 10)
for (i in seq_along(out)) {
res <- try(...function call here...)
## res contains the actual error msg in object of class "try-error"
while(inherits(res, "try-error")) {
res <- try(...function call here...)
}
out[[i]] <- res
}
Run Code Online (Sandbox Code Playgroud)
或使用 repeat
out <- vector(mode = "list", length = 10)
for (i in seq_along(out)) {
repreat {
res <- try(...function call here...)
if(!inherits(res, "try-error"))
break
}
out[[i]] <- res
}
Run Code Online (Sandbox Code Playgroud)
您需要根据需要安排out所需的长度或对象类型来保存结果,以及是否需要记录功能是否失败(如上例所示NA)将取决于您的内容是做.如果没有一个明确的例子,那就是你得到的最好的.
阅读?try并看一下?tryCatch,后者是一种更常用的陷阱错误机制.try本身是使用tryCatch例如......
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |