Title:try

在跑一大串迴圈估計的時候,難免會遇上無法執行的時候,原因有百百種,我個人最常遇到的是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的結果另外定義就可以把迴圈完整跑完囉