预警机制

R 防御式编程

Dr. Colin Gillespie

Jumping Rivers

预警机制

  • 尽量预防问题
  • 出现问题时理性处理

例如,用 T/F 代替 TRUE/FALSE 的做法

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!

此时 F 被当作 TRUE

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...