这样吧,用try来控制错误信息。如果solve出错的话就进入下一个循环。
这是一个简单的程序。我从0,1,2里面任选四个数字组成一个2乘以2的矩阵,然后求它的逆。这个矩阵有可能是不可逆的,用solve的话就会出错。
这个是没有try控制的语句
set.seed(1)
count <- 1
inverses <- vector(mode = "list", 100)
repeat {
x <- matrix(sample(0:2, 4, replace = T), 2, 2)
inverses[[count]] <- solve(x)
count <- count + 1
if (count > 100) break
}
在第三个循环就会出错,然后就结束程序了。
然后我们加入try的控制
set.seed(1)
count <- 1
inverses <- vector(mode = "list", 100)
repeat {
x <- matrix(sample(0:2, 4, replace = T), 2, 2)
x.inv <- try(solve(x), silent = TRUE)
if ('try-error' %in% class(x.inv)) next
inverses[[count]] <- x.inv
count <- count + 1
if (count > 100) break
}
如果那个try语句有错误的话,下面那个if语句就会控制结束当前的循环而进入下一个循环。


雷达卡



京公网安备 11010802022788号







