我想要一个函数,它针对特定的异常抛出并返回一条消息,然后简单地检查返回的内容是否是我定义的“异常”之一。例如说我有这个功能:
divideByX <- function(x){
# If x is NA throws exception
if(is.na(x)){
return(exception('x is NA'))
}
# If x is 0 throws exception
else if(x == 0){
return(exception('Cannot divide by zero'))
}
else{
return(10/x)
}
}
因此,如果 x 为 0,则返回异常“不能除以零”,如果 x 为 NA,则返回异常“x 为 NA”,对于 x 的所有其他值,它会尝试计算表达式 10/x。
然后我想运行这样的东西:
tempList <- list('a' = 2, 'b' = 0, 'c' = 5, 'd' = NA)
lapply(tempList, function(x){
if(is.exception(x)){
return(x)
}
else{
y <- divideByX(x)
return(y^2)
}
})
所以它首先检查该值是否是我定义的异常之一,如果是则返回消息,否则它将我的值平方,所以上面应该返回
$a
[1] 25
$b
[1] 'Cannot divide by zero'
$c
[1] 4
$d
[1] 'x is NA'
有谁知道做到这一点的最佳方法?如果有任何不清楚的地方,请告诉我。
提前致谢