Вложенные конструкции if - else
Часть раздела Основы путешествия по R на Coddy — урок 25 из 78.
Иногда двух вариантов недостаточно. Что если вам нужно проверить несколько условий и обработать каждое из них по-разному? Вы можете поместить оператор if-else внутрь другого блока if или else, чтобы создать более сложные пути принятия решений.
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}R сначала проверяет, является ли значение score 90 или выше. Поскольку 85 не соответствует этому условию, выполнение переходит к блоку else.
Внутри другой if проверяет, составляет ли score как минимум 80. Так как 85 проходит эту проверку, выводится "Grade: B".
R предоставляет более лаконичный способ записи этого с помощью else if:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}Оба подхода работают одинаково, но else if делает ваш код более плоским и удобным для чтения. Вы можете объединять в цепочку столько блоков else if, сколько потребуется, и R выполнит только первый блок, условие которого истинно.
Задание
ЛегкоСоздайте систему расчета стоимости билетов, используя вложенные операторы if-else или else if, чтобы определить цену билета в зависимости от возраста.
Вам предоставлена следующая переменная:
age <- 25Напишите серию условий, чтобы определить и вывести цену билета на основе следующих правил:
- Если возраст меньше 5, выведите
"Free" - Если возраст от 5 до 12 лет (включительно), выведите
"$5" - Если возраст от 13 до 17 лет (включительно), выведите
"$8" - Если возраст от 18 до 64 лет (включительно), выведите
"$12" - Если возраст 65 лет и старше, выведите
"$7"
Используйте функцию print() для вывода результата.
Шпаргалка
Вы можете вкладывать операторы if-else друг в друга для проверки нескольких условий:
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}Более чистый подход — использование else if для объединения нескольких условий в цепочку:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}R оценивает условия по порядку и выполняет только первый блок, условие которого истинно. Вы можете объединять в цепочку столько блоков else if, сколько необходимо.
Попробуйте сами
# Предоставленная переменная
age <- 25
# TODO: Напишите свой код ниже
# Используйте вложенные операторы if-else или else if, чтобы определить цену билета
# на основе предоставленных возрастных правилВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строками