尝试另一个随机种子

时间:2016-10-12 13:05:48

标签: r random error-handling

我需要一个代码尝试随机种子,直到获得所需的结果或达到最大尝试次数。这是一个人为的例子:函数smallr()返回随机数< 0.2或错误消息。如果tryCatch捕获错误,则使用不同的随机种子进行另一次尝试,并重复该过程直到达到最大尝试次数(此处为50)。

smallr <- function() {
    r <- runif(1)
    if (r >= 0.2)
        stop("r >= 0.2")
    r
}

i <- 1
set.seed(1)
r <- tryCatch(smallr(), error=function(e) NA)
while(is.na(r) & i <= 50) {
    rm(.Random.seed)
    r <- tryCatch(smallr(), error=function(e) NA)
    i <- i + 1
}
r

是否可以在异常处理系统中执行相同的操作? (也许以特定方式使用tryCatch函数本身?)

我的实际动机是拟合一系列复杂的回归模型,并通过改变随机种子来克服偶尔缺乏收敛。鉴于此过程是更大脚本的一部分,我宁愿尽可能简洁地保持代码。

0 个答案:

没有答案