RUnitのcheck *機能を使用して前提条件/事後条件文を作成することをお勧めしますか?これはパフォーマンスやその他の面で犠牲となるでしょうか?Rでアサーションを作成するには?
10
A
答えて
4
これは古い投稿であることは知っていますが、おそらくこの回答はオペレータフォームのRアサーションを探している他の人にとって役に立ちます。面倒なステートメントの最後にアサーションを付ける場合、これは正しい方向への一歩かもしれません。
"%assert%" <- function(e1, e2)
{
args <- as.list(match.call()[-1])
defs <- as.list(args$e1)
preds <- as.list(args$e2)[-1L]
for(var in names(defs)[names(defs) != ""]) assign(var, eval(defs[[var]]))
for(p in unlist(preds)) eval(
parse(
text = paste0("if(!", deparse(p), ") stop('assertion ",deparse(p) , " is not true')")
)
)
return(eval(args$e1))
}
例:あなたはベクトルxの平均値を計算していて、各要素が1と10の間にあることを確認したい場合は、
mean(x = sample(1:10, size = 100, replace = T)) %assert% c(min(x) > 0 && max(x) < 11)
#5.62
を使用することができ場合、この条件のISN」トン真の、あなたはそれが完全にテストされていないですので、ご自身の責任で使用して、このような
mean(x = sample(11:20, size = 100, replace = T)) %assert% c(min(x) > 0, max(x) < 11)
#Error in eval(expr, envir, enclos) : assertion max(x) < 11 is not true
として情報提供(ISH)エラーが発生します!
20
アサーションには常にstopifnot()
を使用します。
関連する問題
- 1. 正規表現でオプションのアサーションを作成するには?
- 2. C++なしでコンパイル時アサーションを作成するには11
- 3. 組み込みのアサーションのように動作するカスタムPHPUnitアサーションを作成するには?
- 4. Rでマージンエフェクトテーブルを作成するには?
- 5. rでデータフレームを作成するには
- 6. Rでitemsetsを作成するには?
- 7. Rでクラスタプロットを作成するには?
- 8. スポックのリストにアサーションを作成
- 9. はChargeInhibitアサーションの作成(OS X 10.6.8)
- 10. Rピボットテーブルを作成するR
- 11. %Rオーバーラップマトリックスを作成するR
- 12. Iterableで要素についてのアサーションを作成
- 13. プログラムを作成するR
- 14. エリアプロットを作成するR
- 15. Node.jsにSAMLアサーションを作成する方法はありますか
- 16. rでグループごとにサマリーテーブルを作成するには?
- 17. オブジェクトRでのショットチャートを作成中R
- 18. 式ツリーをRで作成する
- 19. lme()のループをrで作成する
- 20. tsオブジェクトをRで作成する
- 21. R igraphでホバーボタンを作成する
- 22. ダミー変数をRで作成する
- 23. devtools :: documentでRパッケージエラーを作成する
- 24. Rで自動化を作成する
- 25. R(ggplot2)でエラーバーを作成する
- 26. リストオブジェクトをループ内に作成するR
- 27. Rデータフレームにギリシャシンボルを作成する
- 28. データフレームのコピーをRで作成するには
- 29. Shiny/Rでカスタムリーフレットポップアップスタイルを作成するには
- 30. Rで2x2x2デザインのggplot 2スパゲッティプロットを作成するには?
Seconded。それは簡単です、それは明らかです、それはRベースにあり、それは遍在しています。 –
ですが、読みやすくなります。前提条件がうまくいかなかった理由を説明したいと思います。*チェックは単に美しい_checkEquals(a、b、 "a must be b")_ –
代わりに 'if' +' stop'を使って条件をチェックしてエラーメッセージを出すことができます。 – nico