如何使用tryCatch计算while循环中的错误

时间:2013-01-29 23:03:34

标签: r

我希望能够使用tryCatch从我的lm模型中计算我的错误/非收敛,try函数跳过该模型,我将在下面举例说明我的代码,以便有人可以提供帮助。< / p>

i =- 0
count = 0
count1 = 0
fit = rep(NA, 1000)

while(i < 1000) try({ 
    count1 = count1 + 1
    dat = sample(data,replace = T)
    fit[i] = lm(y~x1 + x2, data = dat)
    count <- count + 1
}, silent = T)

我上面的代码运行顺畅但有时因为我重新采样数据,模型没有收敛,因此使用try函数,我需要计算模型不收敛的次数。

我尝试在模型之前和之后放置count1和count,它们都计数为1000.但我确信某些模型不会收敛并给出错误(因此如果x1分类是这样的重新采样后它只有一个级别而不是两个级别,那么我们就有错误。)

有人可以帮助我如何在此while循环中使用tryCatch来解决此问题 问题

1 个答案:

答案 0 :(得分:1)

你需要这样的东西(你需要增加你的while循环):

i <- 1
count1 <- 0
fit <- rep(NA, 1000)

while(i <= 1000) { 
    dat <- sample(data, replace = T)
    temp <- try(lm(y~x1 + x2, data = dat))
    if(inherits(temp,"try-error"))
        count1 <- count1 + 1
    else
        fit[i] <- temp
    i <- i + 1
}