Search code examples
rshort-circuiting

Understanding when the && operator short circuits


Perhaps I'm missing something obvious.

In R, TRUE && NA evalues to NA. This doesn't make sense to me, because && should evaluate left to right, and stop as soon as one of its conditions is true.


Solution

  • This doesn't make sense to me, because && should evaluate left to right, and stop as soon as one of its conditions is true.

    This is wrong. You are mixing up && with ||:

    • TRUE && FALSE gives FALSE
      • && requires both conditions to be TRUE
      • && will short-circuit on FALSE
    • TRUE || FALSE gives TRUE
      • || requires a single condition to be TRUE
      • || will short-circuit on TRUE

    Also,

    TRUE || NA 
    

    gives

    TRUE