Уроки модуля (2/2)
Условные выражения и циклы
Чтобы реализовать сложные алгоритмы и процедуры в R, вам необходимо иметь возможность контролировать, какие инструкции выполнять и сколько раз их повторять.
Условные операторы
В R фундаментальная условная структура основана на if и else. Синтаксис очень похож на такие языки, как JavaScript или C:
score <- 85
if (score >= 60) {
print("Passed!")
} else {
print("Failed.")
}Фигурные скобки {} определяют блоки кода, которые будут выполняться в зависимости от результата логического выражения внутри круглых скобок.
Цикл for
Цикл for в R используется для перебора элементов последовательности (например, вектора или списка).
# Print numbers from 1 to 3
for (i in 1:3) {
print(i)
}В R синтаксис 1:3 — это сокращенный способ создания вектора c(1, 2, 3).
Мы также можем перебирать элементы существующего вектора напрямую:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}Функция ifelse
В R функция ifelse() представляет собой векторизованную версию оператора if-else. Он позволяет применить условие ко всему вектору за одну операцию, возвращая вектор результатов.
scores <- c(55, 80, 45, 90)
# Se score >= 60 assegna "Pass", altrimenti "Fail"
results <- ifelse(scores >= 60, "Pass", "Fail")
print(results) # "Fail" "Pass" "Fail" "Pass"Цикл while
Цикл while используется для повторения блока кода до тех пор, пока определенное условие остается истинным (TRUE). Очень важно гарантировать, что условие в конечном итоге станет ложным, чтобы предотвратить бесконечные циклы.
counter <- 1
while (counter <= 3) {
print(counter)
counter <- counter + 1
}Попробуйте сами
Напишите условный оператор if-else, который проверяет, больше ли значение переменной или равно 60. Если это так, установите статус «Пройдено», в противном случае установите его на «Не пройдено».
Показать подсказку
Оценка Verifica >= 60 и статус оценки <- «Прошел» o статус <- «Не прошел»
Решение доступно после 3 попыток
Напишите цикл for, который перебирает последовательность 1:5 и печатает каждое значение с помощью функции print().
Показать подсказку
Usa la sintassi: for (i in 1:5) { print(i) }
Решение доступно после 3 попыток
Учитывая вектор v, напишите цикл for, который перебирает каждый элемент и печатает его двойное значение (val * 2) с помощью print().
Показать подсказку
Перебираем элементы v: for (val in v) { print(val * 2) }
Решение доступно после 3 попыток
Учитывая оценки вектора, используйте функцию ifelse(), чтобы проверить, какие элементы больше или равны 60. Сохраните результат (который будет содержать «Прошел» или «Не прошел» для каждого элемента) в переменной results.
Показать подсказку
Используйте функцию: результаты <- ifelse(баллы >= 60, «Пройдено», «Не пройдено»)
Решение доступно после 3 попыток
Используйте цикл while, чтобы удваивать значение x, пока оно не превысит 50. Также увеличивайте переменную счетчика на каждой итерации.
Показать подсказку
Используйте цикл while (x <= 50) и обновите x и счетчик внутри фигурных скобок.
Решение доступно после 3 попыток