' e'或者' c'来自R的tryCatch

时间:2014-10-07 12:57:48

标签: r error-handling

我一直在阅读有关如何使用tryCatch的答案。我真的不明白c变量来自哪里。

e.g。 (通过http://adv-r.had.co.nz/Exceptions-Debugging.html#condition-handling

show_condition <- function(code) {
  tryCatch(code,
    error = function(c) "error",
    warning = function(c) "warning",
    message = function(c) "message"
  )
}
show_condition(stop("!"))
#> [1] "error"
show_condition(warning("?!"))
#> [1] "warning"
show_condition(message("?"))
#> [1] "message"

# If no condition is captured, tryCatch returns the 
# value of the input
show_condition(10)
#> [1] 10

c是系统变量吗? Elsewhere其他人似乎在其位置使用e

1 个答案:

答案 0 :(得分:3)

在您的代码中,function(c) "error"只是tryCatch运行的匿名函数,以防code参数引发错误。

condition的参数传递给此匿名函数,它允许您获取引发错误的call和由R生成的message。例如:

R> tryCatch(print(foobar), error=function(c) print(c$message))
[1] "objet 'foobar' introuvable"

因此,c这里只是您作为参数传递给condition的名称,您可以为其指定任何名称:c,{{1} }甚至e

例如:

deliciouspizza