103

何かが真であるかどうかをチェックし、そうでない場合は特定のエラーメッセージを出力して終了するステートメント

4

5 に答える 5

131

stopifnot()

単体テスト用のRunittestthatなどのパッケージにも興味があるかもしれません。

于 2010-02-10T00:38:19.610 に答える
12

@ニック:

プログラムでエラーをスローする条件をテストするために、わかりやすい名前で関数を作成すると、エラー メッセージを制御できます。次に例を示します。

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 が提案したようにそれをテストしてください。

于 2011-08-25T22:02:44.213 に答える
6

これは、コマンドで実現できますstop。このコマンドは、関数の実行を停止し、エラー メッセージを出力します。たとえば、変数somethingFALSE次のとおりかどうかをテストできます。

if(something == FALSE){
   stop("error message to print")   
}

同様に、warningコマンドは警告を出力します (ただし、コードの実行は続行します)。

if(something == FALSE){
   warning("error message to print")   
}

これらはどちらもベース R によって提供され、独自の関数を作成する際にパッケージを実行したり含めたりする必要はありません。私は依存関係の少ないコードを書くためにこのアプローチを好み、この構文はパッケージ開発で広く使用されています。assert_thatただし、同様の機能は、Hadley の「tidyverse」の一部として最近リリースされた機能を備えた「assertthat」パッケージによってサポートされています。

于 2018-06-01T04:34:50.027 に答える