2013-06-22 21 views
5

Dlaczego możemy używać instrukcji ifelse(), ale nie else if(){} w with() lub within()?else if() {} VS ifelse()

Słyszałem, że pierwszy jest wektoryzowany, a nie drugi. Co to znaczy ?

Odpowiedz

11

if konstrukt uważa tylko pierwszy składnik, gdy wektor jest przekazywana do niego (i daje ostrzeżenie)

if(sample(100,10)>50) 
    print("first component greater 50") 
else 
    print("first component less/equal 50") 

Funkcja ifelse wykonuje się sprawdzenie każdego elementu i zwraca wektor

ifelse(sample(100,10)>50, "greater 50", "less/equal 50") 

Funkcja ifelse jest przydatna na przykład w przypadku transform. Często przydaje się to do: używania & lub | w ifelse warunkach i && lub || w if.

9

odpowiedzi do drugiej części:

* Korzystanie if gdy x ma długość 1, ale że y jest większa niż 1 *

x <- 4 
y <- c(8, 10, 12, 3, 17) 
if (x < y) x else y 

[1] 8 10 12 3 17 
Warning message: 
In if (x < y) x else y : 
    the condition has length > 1 and only the first element will be used 

Korzystanie ifelse gdy x ma długość 1, ale wartość y jest większa niż 1

ifelse (x < y,x,y) 
[1] 4 4 4 3 4 
+0

jest to bardzo interesujące. Mogę faktycznie uznać to za wadę, preferując otrzymanie ostrzeżenia, gdy spróbuję porównać int i listę –