早期警戒システム

ディフェンシブRプログラミング

Dr. Colin Gillespie

Jumping Rivers

早期警戒システム

  • 可能な限り問題を回避する
  • 発生時は適切に対処する

例:TRUE/FALSET/Fのショートカットを使う場合

ディフェンシブRプログラミング

問題1: TRUE と FALSE

  • TRUE と FALSE は特別な値
  • 上書きはできない
TRUE <- 5
# Error in TRUE <- 5 : invalid (do_set) left-hand side to assignment
ディフェンシブRプログラミング

問題2: TRUE と FALSE

F統計量を計算するとします。自然には次のようにします

# df は F 分布の密度関数
(F <- df(1, 9, 67))
[1] 0.7798

しかし R は正の数を TRUE とみなすため、

if(F) message("Yer aff yer heid!")
Yer aff yer heid!

FTRUE として扱われます!

ディフェンシブRプログラミング
  • TRUEFALSE を使う習慣をつける
    • TF は使わない
      • TRUE の判定には isTRUE() を使う
isTRUE(T)
[1] TRUE
isTRUE(2)
[1] FALSE
T <- 10
isTRUE(T)
[1] FALSE
ディフェンシブRプログラミング

少し練習しましょう

ディフェンシブRプログラミング

Preparing Video For Download...