我希望能够使用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
来解决此问题
问题
答案 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
}