Warum können wir ifelse()
aber nicht else if(){}
in with()
oder within()
Anweisung verwenden?sonst if() {} VS ifelse()
Ich hörte das erste ist vektorisierbar und nicht das letztere. Was heißt das ?
Warum können wir ifelse()
aber nicht else if(){}
in with()
oder within()
Anweisung verwenden?sonst if() {} VS ifelse()
Ich hörte das erste ist vektorisierbar und nicht das letztere. Was heißt das ?
Das if
Konstrukt berücksichtigt nur die erste Komponente als ein Vektor an sie übergeben wird, (und gibt eine Warnung)
if(sample(100,10)>50)
print("first component greater 50")
else
print("first component less/equal 50")
Die ifelse
Funktion die Prüfung an jeder Komponente durchführt und liefert einen Vektor
ifelse(sample(100,10)>50, "greater 50", "less/equal 50")
Die ifelse
Funktion ist zum Beispiel nützlich für transform
. Es ist oft nützlich, &
oder |
in ifelse
Bedingungen und &&
oder ||
in if
zu verwenden.
Antwort für Ihren zweiten Teil:
* if
Verwendung, wenn x Länge von 1 hat, aber dass von y größer als 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
ifelse
verwenden, wenn x hat Länge von 1, aber die von y ist größer als 1
ifelse (x < y,x,y)
[1] 4 4 4 3 4
das ist super interessant. Ich könnte es tatsächlich als einen Nachteil betrachten, lieber eine Warnung erhalten, wenn ich versuche, ein int und eine Liste zu vergleichen –