2016-03-31 214 views
0

[R重複我有這樣的代碼:While循環,錯誤

iit = 0 

while(1) 
{ 
SIGMABf=replicate(10, rnorm(10)) 
iit=iit+1 
if(inherits(solve(SIGMABf), "error")){iit=iit-1;next} 
if (iit==10) {break} 
} 

然而,繼承函數不是爲逆

有沒有辦法趕上錯誤和重複的工作?

+0

我的代碼沒有錯誤。 –

回答

0

try功能就在這裏。您可以使用inherits或更易於使用class來查看操作是否失敗。

a <- try(solve(1)) 
class(a) 
# matrix 
b <- try(solve(0)) 
class(b) 
# try-error 

對於這種特殊情況下,你可以更好地使用det,看是否矩陣是非奇異。如果det(A) != 0,則A是可逆的。