R-Catching错误并转换为逻辑错误

时间:2016-09-24 19:36:07

标签: r

我正在写一个函数f,它有几个错误陷阱,即2个错误陷阱。发生这些错误时,我会对每个错误使用stop()。我正在制作另一个测试函数test.f来检查这些错误陷阱是否正常工作。是否可以创建一个逻辑列表来检查每个错误陷阱是否正常工作,如果错误陷阱发出停止错误,则返回TRUE

例如,

assert('Number.isFinite(1)', true);
assert('Number.isFinite(1.1)', true);
assert('Number.isFinite(+0)', true);
assert('Number.isFinite(-0)', true);
assert('Number.isFinite(-1.1)', true);
assert('Number.isFinite(+Infinity)', false);
assert('Number.isFinite(-Infinity)', false);
assert('Number.isFinite(NaN)', false);
assert('Number.isFinite(null)', false);
assert('Number.isFinite(undefined)', false);
assert('Number.isFinite(true)', false);
assert('Number.isFinite(false)', false);
assert('Number.isFinite("123")', false);
assert('Number.isFinite("foo")', false);
assert('Number.isFinite(new Number(1))', false);
assert('Number.isFinite([])', false);
assert('Number.isFinite({})', false);
assert('Number.isFinite(function(){})', false);
function assert(code, expected) {
  var result = eval(code);
  console.log('Test ' + (result===expected ? 'PASS' : 'FAIL') + ': ', code, ' -> ', result);
}

观察结果不是我使用列表时的预期结果,但是当我使用单个元素时,结果是预期的,例如是(check.x,“error”)

f<-function(x=1,y){
  if(x<0){
    stop("x is negative")
   }
   if(missing(y)){
   stop("y is missing")
 }
}


test.f<-function(){
  check.x<-tryCatch(f(-1,10),error=function(e) e ) 
  check.y<-tryCatch(f(1,),error=function(e) e )
  ls<-c(check.x,check.y)
  ls2<-c()
  for( i in ls) {
    if(is(i,"error")){
    ls2<-c(ls2,TRUE)
    }else{
      ls2<-c(ls2,FALSE)
    }
  }
  print(is(check.x,"error"))
  return(ls)
}

0 个答案:

没有答案