Příkaz if else
Příkaz if-else je skvělý nástroj pro vývojáře, který se pokouší vrátit výstup na základě podmínky. V R je syntaxe:
if (condition) {Expr1} else {Expr2}
Chceme prozkoumat, zda je proměnná uložená jako „množství“ vyšší než 20. Pokud je množství větší než 20, kód vytiskne „Prodali jste hodně!“ jinak dnes nestačí.
# Create vector quantityquantity <- 25# Set the is-else statementif (quantity > 20) {print('You sold a lot!')} else {print('Not enough for today')}
Výstup:
## [1] "You sold a lot!"
Poznámka : Ujistěte se, že jste správně napsali odsazení. Kód s více podmínkami se může stát nečitelným, pokud odsazení není ve správné poloze.
Výrok else if
Úroveň řízení můžeme dále přizpůsobit pomocí příkazu else if. S elif můžete přidat tolik podmínek, kolik chceme. Syntaxe je:
if (condition1) {expr1} else if (condition2) {expr2} else if (condition3) {expr3} else {expr4}
Zajímá nás, jestli jsme prodali množství mezi 20 a 30. Pokud ano, pak pinta Průměrný den. Pokud je množství> 30 tiskneme Jaký skvělý den !, jinak Nestačí pro dnešek.
Můžete zkusit změnit množství množství.
# Create vector quantiyquantity <- 10# Create multiple condition statementif (quantity <20) {print('Not enough for today')} else if (quantity > 20 &quantity <= 30) {print('Average day')} else {print('What a great day!')}
Výstup:
## [1] "Not enough for today"
Příklad 2:
DPH má jinou sazbu podle zakoupeného produktu. Představte si, že máme tři různé druhy produktů s různou DPH:
Kategorie | produkty | káď |
---|---|---|
A | Kniha, časopis, noviny atd. | 8% |
B | Zelenina, maso, nápoje atd. | 10% |
C | Tričko, jean, kalhoty atd ... | 20% |
Můžeme napsat řetězec, který použije správnou sazbu DPH na produkt, který si zákazník koupil.
category <- 'A'price <- 10if (category =='A'){cat('A vat rate of 8% is applied.','The total price is',price *1.08)} else if (category =='B'){cat('A vat rate of 10% is applied.','The total price is',price *1.10)} else {cat('A vat rate of 20% is applied.','The total price is',price *1.20)}
Výstup:
# A vat rate of 8% is applied. The total price is 10.8