Comment utiliser des déclarations si & # 133 ailleurs dans r

Lorsque vous utilisez R, parfois vous avez besoin de votre fonction de faire quelque chose si une condition est vraie et quelque chose d'autre si elle est pas. Vous pouvez le faire avec deux si déclarations, mais il ya un moyen plus facile dans R: un sinon déclaration. Un si # 133-else déclaration contient les mêmes éléments que un si déclaration (voir la section précédente), et puis certains supplémentaire:

  • Le mot-clé autre, placé à la suite du premier bloc de code

  • Un deuxième bloc de code, contenu à l'intérieur des accolades, qui doit être effectuée si et seulement si le résultat de la condition énoncée à la if () déclaration est FAUX

Dans certains pays, le montant de la valeur ajoutée (TVA) qui doit être versée dépend de savoir si le client est un organisme public ou privé. Imaginez que les organismes publics doivent payer seulement 6 pour cent sur la TVA et des organisations privées à payer 12 pour cent de TVA. Vous pouvez ajouter un argument supplémentaire public au priceCalculator () fonctionner et l'adopter comme suit pour ajouter le montant correct de la TVA:

if (heures> 100) net.price lt; - net.price * 0.9if (public) {tot.price lt; - net.price * 1,06} else {tot.price lt; - net.price * 1.12} ronde (tot.price)}

Si vous envoyez le code de la console, vous pouvez tester la fonction. Par exemple, si vous avez travaillé pendant 25 heures, le code suivant vous donne les différents montants que vous facturez pour les organisations publiques et privées, respectivement:




> PriceCalculator (25, publique = TRUE) [1] 1 060> priceCalculator (25, publique = FALSE) [1] 1120

Cela fonctionne bien, mais comment ça marche?

Si vous regardez le sinon déclaration dans la fonction précédente, vous trouverez ces éléments. Si la valeur de l'argument public est VRAI, le prix total est calculée comme 1,06 fois le prix net. Sinon, le prix total est 1,12 fois le prix net.

La si déclaration a besoin d'une valeur logique entre les parenthèses. Toute expression que vous mettez entre les parenthèses est évaluée avant qu'il ne soit transmis à la si déclaration. Donc, si vous travaillez avec une valeur logique directement, vous ne devez pas spécifier une expression à tous. En utilisant, par exemple, si (== publique TRUE) est redondant.

En outre, dans le cas d'un sinon déclaration, vous pouvez déposer les accolades si les deux blocs de code existent d'une seule ligne de code. Ainsi, vous pourriez simplement oublier les accolades et presser l'ensemble sinon déclaration sur une seule ligne. Ou vous pouvez même écrire comme ceci:

si tot.price (public) lt; - net.price * 1,06 elsetot.price lt; - net.price * 1.12

Mettre le autre déclaration à la fin d'une ligne et non le début de la suivante est une bonne idée.

En général, R lit plusieurs lignes comme une seule ligne tant qu'il est absolument clair que la commande est pas encore terminé. Si vous mettez autre au début de la deuxième ligne, R considère la première ligne terminé et se plaint. Vous pouvez mettre autre au début d'une ligne suivante que si vous le faites dans une fonction et vous Source le dossier complet à la fois à R.

Mais vous pouvez faire cette courte. La si déclaration fonctionne comme une fonction et, par conséquent, il renvoie également une valeur. En conséquence, vous pouvez attribuer cette valeur à un objet ou de l'utiliser dans les calculs. Donc, au lieu de recalculer prix net et l'attribution du résultat à tot.price dans les blocs de code, vous pouvez utiliser la sinon déclaration de ce genre:

tot.price lt; - net.price * si (public) 1,06 1,12 d'autre

R va d'abord évaluer la sinon déclaration, et multiplier le résultat par prix net. Le résultat de cette opération est alors attribué à tot.price. Cela diffère pas d'un iota à partir du résultat des cinq lignes de code que nous avons utilisé pour l'original sinon déclaration.


» » » » Comment utiliser des déclarations si & # 133 ailleurs dans r