Vidéo: BUG ZONE #6: Super Mario World (SNES) 2025
Dans certains cas, vous devrez faire plusieurs choix dans R. Les instructions if et if … else vous laissent exactement deux options, mais la vie est rarement aussi simple que cela. Imaginez que vous avez des clients à l'étranger.
Supposons que tout client à l'étranger n'a pas besoin de payer la TVA pour l'exemple. Cela vous laisse maintenant trois taux de TVA différents: 12% pour les clients privés, 6% pour les clients publics et aucun pour les clients étrangers.
La façon la plus intuitive de résoudre ce problème consiste simplement à enchaîner les choix. Si un client vit à l'étranger, ne facturez pas de TVA. Sinon, vérifiez si le client est public ou privé et appliquez le taux de TVA correspondant.
Si vous définissez un argument client pour votre fonction qui peut prendre les valeurs 'foreign', 'public' et 'private', vous pouvez coder l'algorithme précédent comme ceci:
if (client == 'private') {tot. prix <- net. prix * 1. 12 # 12% TVA} else {if (client == 'public') {tot. prix <- net. prix * 1. 06 # 6% TVA} else {tot. prix <- net. price * 1 # 0% VAT}}
Avec ce code, vous imbriquez la seconde instruction if … else dans la première instruction if … else. C'est tout à fait acceptable et ça marchera, mais imaginez ce que vous auriez à faire si vous aviez quatre ou même plus de possibilités. Nidification d'une déclaration dans une déclaration dans une déclaration dans une déclaration crée rapidement un énorme désordre bouclé.
Heureusement, R vous permet d'écrire tout ce code un peu plus clairement. Vous pouvez enchaîner les instructions if … else comme suit:
if (client == 'private') {tot. prix <- net. price * 1. 12} else if (client == 'public') {tot. prix <- net. prix * 1. 06} else {tot. prix <- net. price}
Dans cet exemple, le chaînage fait une différence de seulement deux accolades, mais quand vous avez plus de possibilités, il rend le code lisible. Notez que vous n'avez pas à tester si l'argument client est égal à 'étranger' (bien que ce ne soit pas une erreur de le faire). Vous supposez simplement que si le client n'a aucune des deux autres valeurs, cela doit être «à l'étranger».
Les instructions chaînées si … else fonctionnent sur une seule valeur à la fois. Vous ne pouvez pas utiliser ces instructions chaînées if … else de manière vectorisée. Pour cela, vous pouvez imbriquer plusieurs instructions ifelse, comme ceci:
VAT <- ifelse (client == 'private', 1. 12, ifelse (client == 'public', 1. 06, 1)) tot. prix <- net. prix * TVA
Ce morceau de code peut devenir assez déroutant si vous avez plus de trois choix, cependant. La solution à cela est de changer.
