From the help page for Logical Operators
, accessible by ?"&&"
:
& and && indicate logical AND and | and || indicate logical OR. The shorter form performs elementwise comparisons in much the same way as arithmetic operators. The longer form evaluates left to right examining only the first element of each vector. Evaluation proceeds only until the result is determined. The longer form is appropriate for programming control-flow and typically preferred in if clauses.
(R version 2.13-0)
In other words, when using subset
, use the single &
.
Here is an illustration of the difference:
c(1,1,0,0) & c(1,0,1,0)
[1] TRUE FALSE FALSE FALSE
c(1,1,0,0) && c(1,0,1,0)
[1] TRUE
If this looks quirky compared to other programming paradigms, remember that R needs to provide a vectorised form of the operator.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…