R函数返回值以及警告消息

时间:2016-03-08 03:09:09

标签: r function try-catch

我调用了其他lib函数,它执行计算并抛出警告消息。我尝试使用tryCatch()来捕获消息,但不知道如何保留计算值和警告消息。这里是示例(简化)代码,我想mydiv函数既有计算值又有警告消息。现在mydiv调用将返回除法值或警告,但不是两者。

INSERT INTO MyTable SELECT (SELECT MAX(question_id)+1),Column1,Column2,etc FROM MyTable Where question_id=100;

如果我调用x = mydiv(2,1),那么x的值为“DIV警告:抛出警告”;如果x = mydiv(2,4)则x:[1] 0.5。 所以我的问题是:1。使用tryCatch:如果可能,如何返回计算值和警告消息; 2.是否有更好的方法从函数中获取两个值。

1 个答案:

答案 0 :(得分:1)

您可以使用内置警告功能,如下所示:

mydiv = function(x, y){  
  if (x > y)
    warning("throw a warning")
  # function calc result
  return(x/y)
}

如果要返回警告而不是将其作为警告消息发出,则可以返回命名列表,如果未生成警告,则列表中的警告条目将为NA:

mydiv = function(x, y){
  warn <- NA  
  if (x > y)
    warn <- "throw a warning"
  # function calc result
  return(list(value=x/y, warning=warn))
}