作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近遇到过几次这个问题。我有一些 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/
我是一名优秀的程序员,十分优秀!