我正在使用 R 的 assertthat 包,并且希望(暂时)在断言失败时输出警告而不是错误。使用 assertthat 包最简单的方法是什么?
我意识到想要警告而不是错误有点违背断言的用途。从长远来看,我们确实希望在断言失败时输出错误。在短期内,我们仍然希望代码即使在输入错误的情况下也能正常工作,因为输入错误的输出现在仍然“足够好”。
一个简单的例子:假设我有一个将 x 作为输入并输出 x+5 的函数。如果 x!=3,我想输出警告。由于我们最终将使用 assert_that,因此如果我们可以使用 assertthat 包来发出警告,那就太好了。
从长远来看,我们将使用这个:
> x <- 3
> fn <- function(x) {assert_that(x==3); return(x+5)}
> fn(3)
[1] 8
> fn(4)
Error: x not equal to 3
在短期内,这是我迄今为止最好的:
> fn <- function(x) {if(!see_if(x==3)) warning(validate_that(x==3)); return(x+5)}
> fn(3)
[1] 8
> fn(4)
[1] 9
Warning message:
In fn(4) : x not equal to 3
如果可能的话,我正在寻找一个更简洁的解决方案(最好的情况是将“output_warning”参数传递给assert_that,但我认为不存在)。