在跑一大串迴圈估計的時候,難免會遇上無法執行的時候,原因有百百種,我個人最常遇到的是singularity的問題,這時候就會自動跳出並結束迴圈,try這個指令可以不跳出繼續執行,只要下一點簡單的指令。 以下以一個矩陣運算為例
X=matrix(1:9,3,3);X
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Y=matrix(1,2,3);Y
## [,1] [,2] [,3]
## [1,] 1 1 1
## [2,] 1 1 1
res=try(X%*%Y,silent = TRUE);res
## [1] "Error in X %*% Y : non-conformable arguments\n"
## attr(,"class")
## [1] "try-error"
## attr(,"condition")
## <simpleError in X %*% Y: non-conformable arguments>
if (class(res)=="try-error") print(list(dim(Y),dim(X)))
## [[1]]
## [1] 2 3
##
## [[2]]
## [1] 3 3
try(X%*%t(Y),silent = TRUE)
## [,1] [,2]
## [1,] 12 12
## [2,] 15 15
## [3,] 18 18
其中,若出現ERROR,整個執行程序會被定義為"try-error" class,CODE的第二行就是之後可以再對出現ERROR的結果另外定義就可以把迴圈完整跑完囉