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 ?
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 ?
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
.
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
jest to bardzo interesujące. Mogę faktycznie uznać to za wadę, preferując otrzymanie ostrzeżenia, gdy spróbuję porównać int i listę –