回答:
@ニック:
プログラムでエラーをスローする条件をテストするための説明的な名前で関数を作成する場合、エラーメッセージを制御できます。次に例を示します。
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
これは、1から8までの数字を出力し、次に、
Error: Less_Than_8(i) is not TRUE
かっこ内の "i"がテストに失敗した値に置き換えられればいいのですが、あなたはあなたが支払うものを手に入れます。
それよりも特別なものが必要な場合は、Runitを調べて、Harlanの提案どおりにテストしてください。
stopifnot()
ます。
これは、stop
コマンドで実行できます。このコマンドは、関数の実行を停止し、エラーメッセージを出力します。たとえば、変数something
がFALSE
次のとおりかどうかをテストできます。
if(something == FALSE){
stop("error message to print")
}
同様に、warning
コマンドは警告を出力します(ただし、コードの実行は続行します)。
if(something == FALSE){
warning("error message to print")
}
これらはどちらもベースRによって提供され、実行するパッケージや独自の関数の作成に含めるパッケージを必要としません。依存性の少ないコードを書くよりもこのアプローチを好み、この構文はパッケージ開発で広く使用されています。ただし、同様の機能はassert_that
、Hadleyの「tidyverse」の一部として最近リリースされた機能を備えた「assertthat」パッケージでサポートされています。