Video: Koper 26-Ebrahim Boudrous achter moord coffeeshop Goed Goed ? van Said Faggouss. 2024
In sommige gevallen moet je meerdere keuzes maken in R. De if en if … else-statements laten je precies twee opties over, maar het leven is zelden zo simpel als dat. Stel je voor dat je een aantal klanten in het buitenland hebt.
Laten we aannemen dat een klant in het buitenland geen btw hoeft te betalen omwille van het voorbeeld. U behoudt nu drie verschillende btw-tarieven: 12 procent voor privé-klanten, 6 procent voor openbare klanten en geen voor buitenlandse klanten.
De meest intuïtieve manier om dit probleem op te lossen, is alleen maar om de keuzes te ketenen. Als een klant in het buitenland woont, brengt u geen btw in rekening. Controleer anders of de client openbaar of privé is en gebruik het relevante BTW-tarief.
Als u een argumentclient definieert voor uw functie die de waarden 'abroad', 'public' en 'private' kan gebruiken, kunt u het vorige algoritme als volgt coderen:
if (client == 'private') {tot. prijs <- netto. prijs * 1. 12 # 12% BTW} else {if (client == 'public') {tot. prijs <- netto. prijs * 1. 06 # 6% BTW} anders {tot. prijs <- netto. prijs * 1 # 0% BTW}}
Met deze code nest je de tweede if … else-instructie in de eerste if … else-instructie. Dat is perfect aanvaardbaar en het zal werken, maar stel je voor wat je zou moeten doen als je vier of zelfs meer mogelijkheden had. Door een statement in een statement in een statement in een statement te nesten, ontstaat snel een enorme krullende puinhoop.
Gelukkig kun je R die code een beetje duidelijker schrijven. U kunt de if … else-instructies als volgt ketenen:
if (client == 'private') {tot. prijs <- netto. prijs * 1. 12} else if (client == 'public') {tot. prijs <- netto. prijs * 1. 06} anders {tot. prijs <- netto. price}
In dit voorbeeld maakt de keten slechts een verschil tussen slechts twee accolades, maar wanneer u meer mogelijkheden heeft, is code leesbaar. Merk op dat u niet hoeft te testen of de argumentclient gelijk is aan 'in het buitenland' (hoewel het niet verkeerd zou zijn om dat te doen). U neemt gewoon aan dat als de klant geen van de twee andere waarden heeft, deze 'in het buitenland' moet zijn.
Geketend als … else statements werken op één waarde per keer. U kunt deze geketende if … else-instructies niet op een vector-gedrukte manier gebruiken. Daarvoor kunt u meerdere ifelse-statements nesten, zoals deze:
VAT <- ifelse (client == 'private', 1. 12, ifelse (client == 'public', 1. 06, 1)) tot. prijs <- netto. prijs * BTW
Dit codefragment kan echter behoorlijk verwarrend zijn als je meer dan drie keuzes hebt. De oplossing hiervoor is om te schakelen.