R重点关注

R语言错误捕获

2020-06-07  本文已影响0人  周运来就是我

学习R的人,往往一入门就被带进了繁花似锦的统计学世界,慢慢却偏离了编程的道路。这一点和学python的人有显著的区别,加之python的中文资料真的要比R系统的多:

相比之下,R的中文资料:

大部分的R语言的入门书籍都或多或少地炒基本统计学的饭。一个刚入门python的人,如《笨办法学python》肯定是知道python的错误捕获。但是,一个读过三本R语言书籍的人很大概率不知道R语言的错误捕获。

对错误的判断主要利用try()函数

1.将可能会报错的命令行放到try()函数中,并将其赋值到一个变量名fit(可以是任意变量名)中
2.如果有错误,将fit将称为一个类型为“try-error”的变量
3.可以用R ‘try-error’ %in% class(fit)放置在if()函数中进行判断
4.try() 函数一般与next 和 break 进行联用,next跳过本次循环,break跳出循环

ll=list()
ll[1]<-""
for(i in functions("pacman")){
 fit<- try(do.call(i,ll))
 if('try-error' %in% class(fit)){
   next
 }else{
   print((i))
 }
}

tryCatch()函数也可以起到类似的效果

tryCatch(1, finally = print("Hello"))
e <- simpleError("test error")
## Not run: 
 stop(e)
 tryCatch(stop(e), finally = print("Hello"))
 tryCatch(stop("fred"), finally = print("Hello"))

## End(Not run)
tryCatch(stop(e), error = function(e) e, finally = print("Hello"))
tryCatch(stop("fred"),  error = function(e) e, finally = print("Hello"))
withCallingHandlers({ warning("A"); 1+2 }, warning = function(w) {})
## Not run: 
 { withRestarts(stop("A"), abort = function() {}); 1 }

## End(Not run)
withRestarts(invokeRestart("foo", 1, 2), foo = function(x, y) {x + y})

https://blog.csdn.net/qq_18055167/article/details/97621640

上一篇 下一篇

猜你喜欢

热点阅读