2011-10-31 8 views

Odpowiedz

6

& i | - są elementem mądry i może być używany z operacji wektorowej, natomiast || i && zawsze generuje pojedynczy TRUE lub FALSE

theck różnica:

> x <- 1:5 
> y <- 5:1 
> (x > 2) & (y < 3) 
    [1] FALSE FALSE FALSE TRUE TRUE 
> (x > 2) && (y < 3) # here operaand && takes only 1'st elements from logical 
        # vectors (x>2) and (y<3) 
> FALSE 

Więc && i || są powszechnie używane w instrukcjach if (condition) state_1 else state_2, jako dotyczących wektorów o długości 1

+0

Być może warto byłoby dodać, że "||" i "&&" są preferowane w klauzulach if, gdy używana jest tylko pierwsza wartość. –

+3

@lselzer ... ponieważ '||' i '&&' * zwarcie *, tj. Nie sprawdzają niepotrzebnie kolejnych klauzul. tj. "A || B || C' przestaje oceniać i zwraca 'TRUE', gdy tylko znajdzie element' TRUE', podczas gdy 'A && B && C' przestaje oceniać i zwraca' FALSE', jak tylko znajdzie element 'FALSE' ... to jest użyteczne w konstruktach takich jak 'if (! is.na (x) && x> 0)' ... –

+0

@Max, subtelny punkt, ale '&&' nie zawsze zwraca 'TRUE' lub' FALSE'. Rozważ "TRUE && NA", które zwraca 'NA'. – nograpes