在 R 中输出 FALSE 而不是错误

use*_*894 2 error-handling r matrix

我想做的是使用 R 中的命令 chol() 测试矩阵是否是正定的。但是,如果 chol() 命令产生错误,我希望它输出 false 而不是产生错误并停止代码从跑步。是否有捷径可寻?我一直在摆弄 try() 命令,但它仍然给我一个错误。例如,如果我有矩阵:

mat=matrix(c(1,2,3,1,2,3,5,5,5),nrow=3,ncol=3,byrow=F)
try(chol(mat))
Run Code Online (Sandbox Code Playgroud)

这仍然会产生错误“chol.default(mat) 中的错误:3 阶的前导次要不是正定的。”

我怎样才能让它产生 FALSE 而不是这个错误?

Dav*_*son 5

使用tryCatch,并定义在发生错误时使用的处理程序:

tryCatch(chol(mat), error=function(e) FALSE)
Run Code Online (Sandbox Code Playgroud)