gpt4 book ai didi

r - 是否可以停下来返回

转载 作者:行者123 更新时间:2023-12-05 06:25:21 26 4
gpt4 key购买 nike

我最近遇到过几次这个问题。我有一些 R 代码,如果某件事发生,我想 stop() 并退出函数,因此返回退出代码。但是,我还想从该函数中创建的函数中return() 对象的最新副本。

这可能吗?

作为一个非常愚蠢的例子,请看下面的代码。无论你在哪里看到 stop(),我也想 return() i 的值。注意:我知道这不是您编写此函数的方式。这只是一个例子

tmp <- function() {
i <- 1
if (i == 3) {
stop()
}
i <- i + 1
if (i == 3) {
stop()
}
i <- i + 1
if (i == 3) {
stop()
}
}

最佳答案

您可以使用 rlang 的 abort 返回带有错误对象的附加数据:

library(rlang)

## dummy function
fun <- function(x, error = FALSE) {
x <- x + 1
if(error)
abort("Error!", x = x)
return(x)
}

## no error
fun(1, error = FALSE)
#> [1] 2

## error
fun(2, error = TRUE)
#> Error!

## display last error
last_error()
#> <error>
#> message: Error!
#> class: `rlang_error`
#> backtrace:
#> 1. global::fun(2, error = TRUE)
#> Call `rlang::last_trace()` to see the full backtrace

last_error()$x
#> [1] 3

关于r - 是否可以停下来返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com