R Prise de décision

Les structures de prise de décision exigent que le programmeur spécifie une ou plusieurs conditions à évaluer ou à tester, ainsi qu'une ou plusieurs instructions à exécuter si la condition est déterminée comme vraie (obligatoire) et, éventuellement, d'autres instructions à exécuter si la condition est déterminée comme fausse.

Voici la forme générale d'une structure de prise de décision typique que l'on trouve dans la plupart des langages de programmation :

Le langage R fournit les types suivants d'instructions de prise de décision :

  • instruction if
  • instruction if...else
  • instruction switch

instruction if

Une instruction if se compose d'une expression booléenne suivie d'une ou plusieurs instructions.

La syntaxe est la suivante :
if(boolean_expression) {
    // 布尔表达式为真将执行的语句
}

Si l'expression booléenne boolean_expression est vraie, le code à l'intérieur sera exécuté ; si elle est fausse, il ne sera pas exécuté.

Exemple

x <- 50L
if(is.integer(x)) {
   print("X est un entier")
}

L'exécution du code ci-dessus produit le résultat suivant :

[1] "X 是一个整数"

instruction if...else

Une instruction if peut être suivie d'une instruction else facultative, qui s'exécute lorsque l'expression booléenne est fausse.

La syntaxe est la suivante :

if(boolean_expression) {
    // 如果布尔表达式为真将执行的语句
} else {
    // 如果布尔表达式为假将执行的语句
}

Si l'expression booléenne boolean_expression est vraie, le code à l'intérieur du bloc if est exécuté. Si l'expression booléenne est fausse, le code à l'intérieur du bloc else est exécuté.

Exemple

x <- c("google","exemple","taobao")

if("exemple" %in% x) {
   print("contient exemple")
} else {
   print("ne contient pas exemple")
}

L'exécution du code ci-dessus produit le résultat suivant :

[1] "包含 example"

S'il y a plusieurs conditions à évaluer, vous pouvez utiliser if...else if...else:

if(boolean_expression 1) {
    // 如果布尔表达式 boolean_expression 1 为真将执行的语句
} else if( boolean_expression 2) {
    // 如果布尔表达式 boolean_expression 2 为真将执行的语句
} else if( boolean_expression 3) {
    // 如果布尔表达式 boolean_expression 3 为真将执行的语句
} else {
    // 以上所有的布尔表达式都为 false 时执行
}

Exemple

x <- c("google","exemple","taobao")

if("weibo" %in% x) {
   print("Le premier if contient weibo")
} else if ("exemple" %in% x) {
   print("Le deuxième if contient exemple")
} else {
   print("Non trouvé")
}

L'exécution du code ci-dessus produit le résultat suivant :

[1] "第二个 if 包含 example"

instruction switch

Une instruction switch permet de tester l'égalité d'une variable par rapport à une liste de valeurs. Chaque valeur est appelée un case.

La syntaxe est la suivante :

switch(expression, case1, case2, case3....)

switchL'instruction doit respecter les règles ci-dessous :

  • switchDans l'instruction,expressionest une expression constante, qui peut être un entier ou une chaîne. S'il s'agit d'un entier, elle renvoie la valeur à la position case correspondante ; si l'entier n'est pas dans la plage des positions, elle renvoie NULL.
  • Si plusieurs valeurs correspondent, la première est renvoyée.
  • expressionS'il s'agit d'une chaîne, elle correspond à la valeur du nom de variable dans le case ; s'il n'y a pas de correspondance, aucune valeur n'est renvoyée.
  • switch n'a pas d'argument default disponible.
L'exemple suivant renvoie la troisième valeur :

Exemple

x <- switch(
   3,
   "google",
   "example",
   "taobao",
   "weibo"
)
print(x)

L'exécution du code ci-dessus produit le résultat suivant :

[1] "taobao"

S'il s'agit d'une chaîne, la valeur correspondant à la variable de chaîne est renvoyée :

Exemple

you.like<-"example"
switch(you.like, google="www.google.com", example = "www.example.com", taobao = "www.taobao.com")

L'exécution du code ci-dessus produit le résultat suivant :

[1] "www.example.com"

Si l'entier n'est pas compris dans la plage, NULL est renvoyé.

Exemple

> x <- switch(4,"google","example","taobao")
> x
NULL
> x <- switch(4,"google","example","taobao")
> x
NULL
Autres extensions