我正在使用R的assertthat軟件包,並且希望(暫時)在斷言失敗時輸出警告而不是錯誤。使用assertthat包最簡單的方法是什麼?警告,而不是來自assert_that()的錯誤?
我意識到,要警告而不是錯誤的種類違背了什麼斷言應該用於。從長遠來看,我們的確希望在斷言失敗時輸出錯誤。在短期內,我們仍然希望代碼即使在輸入錯誤的情況下也能正常工作,因爲輸入錯誤的輸入現在仍然「足夠好」。
一個簡單的例子:假設我有一個將x作爲輸入並輸出x + 5的函數。如果x!= 3,我想輸出一個警告。因爲我們最終會使用assert_that,所以如果我們可以使用assert來包裝這個警告,那將會很好。
從長遠來看,我們將使用:
> 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,但我認爲不存在)。