English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Условные операторы в языке R

Требования к структуре запроса требуют от программиста указать один или несколько условий для оценки или тестирования, а также инструкции, которые необходимо выполнить при истинности условия (обязательные) и инструкции, которые можно выполнить при ложности условия (необязательные).

Ниже приведена общая форма структуры условия, типичная для большинства языков программирования:

Язык программирования R предоставляет следующие типы условия:

  • if-выражение

  • if...else-выражение

  • Команда switch

if-выражение

Если expression является булевым выражением, за ним может следовать один или несколько предложений.

Грамматический формат:

if(boolean_expression) {
    // если булевое выражение истино, выполняется следующая команда
}

Если булевое выражение boolean_expression истино, выполняется код в этой части, если ложно - не выполняется.

x <- 50L
if(is.integer(x)) {
   print("X является целым числом")
}

switch(you.like, google="www.google.com", w3codebox = "ru.oldtoolbag.com", taobao = "www.taobao.com")

[1] "X является целым числом"

if...else-выражение

заif-выражением может следовать необязательное else-выражение, которое выполняется, если булевое выражение ложно.

Грамматический формат:

if(boolean_expression) {
    // если булевое выражение истино, выполняется следующая команда
}
    // если булевое выражение ложно, выполняется следующая команда
}

Если булевое выражение boolean_expression истино, выполняется код в блоке if. Если булевое выражение ложно, выполняется код в блоке else.

x <- c("google", "w3codebox", "taobao")
if("w3codebox" in x) {
   print("содержит w3codebox")
}
   print("не содержит w3codebox")
}

switch(you.like, google="www.google.com", w3codebox = "ru.oldtoolbag.com", taobao = "www.taobao.com")

[1] "содержит w3codebox"

Если есть несколько условий, можно использовать 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 истино, выполняется следующая команда
}
    // все булевы выражения выше равны false, выполняется
}
x <- c("google", "w3codebox", "taobao")
if("weibo" in x) {
   print("первый if содержит weibo")
} else if ("w3codebox" in x) {
   print("второй if содержит w3codebox")
}
   print("Не найдено")
}

switch(you.like, google="www.google.com", w3codebox = "ru.oldtoolbag.com", taobao = "www.taobao.com")

[1] "Вторая if включает w3codebox"

Команда switch

Одна команда switch позволяет тестировать, когда переменная равна нескольким значениям. Каждое значение называется case.

Грамматический формат:

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

Указанное в выражении Указанное в выражении

  • Указанное в выражении switch Если соответствует нескольким значениям, то возвращается первое. Указанное в выражении

  • Это константное выражение, может быть целым числом или строкой, если это целое число, то возвращается значение position case, если целое число не находится в диапазоне position, то возвращается NULL.

  • Если соответствует нескольким значениям, то возвращается первое.expression

  • Если это строка, то соответствующее ей является значением переменной case, если нет соответствия, то не возвращается значение.

switch не имеет параметра по умолчанию.

Следующий пример возвращает третий элемент:
   x <- switch(
   3,,
   "google",
   "w3codebox",
   "taobao",
"weibo"
)

switch(you.like, google="www.google.com", w3codebox = "ru.oldtoolbag.com", taobao = "www.taobao.com")

print(x)

[1] "taobao"

Если это строка, то возвращается значение переменной строки, соответствующей значению case, если нет соответствия, то не возвращается значение.
you.like<-"w3codebox"

switch(you.like, google="www.google.com", w3codebox = "ru.oldtoolbag.com", taobao = "www.taobao.com")

Выполните вышеуказанный код, результат вывода будет:

[1] "ru.oldtoolbag.com"

Пример
> x <- switch(4,"google","w3codebox","taobao")
> x
Пример
> x <- switch(4,"google","w3codebox","taobao")
> x