Duplicar posible:
R: subset() logical-and operator for chaining conditions should be & not &&¿Cuál es la diferencia entre las formas cortas (&, |) y largas (&&, ||) de AND, o los operadores lógicos en R?
¿Cuál es la diferencia entre (&&
, ||
) formas cortas (&
, |
) y largas de AND, OR operadores lógicos en R?
Por ejemplo:
x==0 & y==1
x==0 && y==1
x==0 | y==1
x==0 || y==1
siempre uso las formas cortas en mi código. ¿Tiene alguna desventaja?
Quizás sería útil agregar que '||' y '&&' se prefieren en las cláusulas if cuando solo se usa el primer valor. –
@lselzer ... porque '||' y '&&' * cortocircuito *, es decir, no verifican las cláusulas siguientes innecesariamente. es decir, 'A || B || C' deja de evaluar y devuelve 'TRUE' tan pronto como encuentra un elemento' TRUE', mientras 'A && B && C' deja de evaluar y devuelve' FALSE' tan pronto como encuentra un elemento 'FALSE' ... esto es útil en construcciones tales como 'if (! is.na (x) && x> 0)' ... –
@Max, un punto sutil, pero '&&' no siempre devuelve 'TRUE' o' FALSE'. Considere 'TRUE && NA', que devuelve' NA'. – nograpes