Video: Thorium Disadvantages 2024
I noen tilfeller må du gjøre flere valg i R. Hvis og hvis … andre setninger gir deg nøyaktig to alternativer, men livet er sjelden så enkelt som det. Tenk deg at du har noen kunder i utlandet.
La oss anta at en hvilken som helst klient i utlandet ikke trenger å betale moms for eksempelets skyld. Dette gir deg nå tre forskjellige momssatser: 12 prosent for private kunder, 6 prosent for offentlige kunder og ingen for utenlandske kunder.
Den mest intuitive måten å løse dette problemet på er bare å knytte valgene. Hvis en klient bor i utlandet, må du ikke belaste noen moms. Ellers må du kontrollere om klienten er offentlig eller privat, og bruk den aktuelle momssatsen.
Hvis du definerer en argumentklient for funksjonen din som kan ta verdiene "i utlandet", "offentlig" og "privat", kan du kode den tidligere algoritmen slik:
hvis (klient == 'privat') {til T. pris <- netto. pris * 1. 12 # 12% MVA} annet {hvis (klient == 'offentlig') {tot. pris <- netto. pris * 1. 06 # 6% MVA} ellers {tot. pris <- netto. pris * 1 # 0% MVA}}
Med denne koden, nester du den andre hvis … annet erklæring i det første hvis … annet erklæring. Det er helt akseptabelt, og det vil fungere, men forestill deg hva du må gjøre hvis du hadde fire eller enda flere muligheter. Å sette en uttalelse i en uttalelse i en uttalelse i en uttalelse skaper raskt et stort krøllete rot.
Heldigvis lar R deg skrive all den koden litt tydeligere. Du kan kjede om … andre setninger som følger:
hvis (klient == 'privat') {tot. pris <- netto. pris * 1. 12} annet hvis (klient == 'offentlig') {tot. pris <- netto. pris * 1. 06} annet {tot. pris <- netto. pris}
I dette eksemplet gjør kjedingen en forskjell på bare to braces, men når du har flere muligheter, gjør den kode lesbar. Merk at du ikke må teste om argumentklienten er lik «utenland» (selv om det ikke ville være feil å gjøre det). Du antar bare at hvis klienten ikke har noen av de to andre verdiene, må den være 'i utlandet'.
Kjedet hvis … andre setninger fungerer på en enkelt verdi om gangen. Du kan ikke bruke disse kjedene hvis … annet erklæringer på en vektorisert måte. For det kan du hente flere ifelse uttalelser, slik:
Mva <- ifelse (klient == 'privat', 1. 12, ifelse (klient == 'offentlig', 1. 06, 1)) tot. pris <- netto. pris * MVA
Dette koden kan bli ganske forvirrende hvis du har mer enn tre valg, skjønt. Løsningen på dette er å bytte.