Итерация по элементам вектора
Часть раздела Основы путешествия по R на Coddy — урок 63 из 78.
Хотя векторизованные операции в R мощны, иногда вам нужно обрабатывать каждый элемент индивидуально с помощью пользовательской логики. Цикл for позволяет перебирать элементы вектора по одному.
Самый простой способ перебора вектора — это итерация непосредственно по его элементам:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}Вывод:
[1] "apple"
[1] "banana"
[1] "cherry"На каждой итерации переменная цикла fruit принимает значение следующего элемента в векторе. Этот подход является чистым и читаемым, когда вам нужны только сами значения.
Вы можете комбинировать итерацию с условной логикой для выборочной обработки элементов:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}Вывод:
[1] 8
[1] 10Этот паттерн полезен, когда вам нужно применить различные операции на основе значения каждого элемента — то, с чем векторизованные операции сами по себе не всегда могут справиться.
Задание
ЛегкоВы получите две строки входных данных:
- Список чисел, разделенных запятыми (например,
12,5,18,3,25,8,14) - Пороговое значение (например,
10)
Используя цикл for для итерации по элементам вектора:
- Создайте вектор из чисел, разделенных запятыми
- Пройдите циклом по каждому элементу вектора
- Для каждого элемента, который больше или равен пороговому значению, выведите этот элемент с помощью функции
print()
Например, если входные данные следующие:
4,15,8,22,6,19,11
10Выходные данные должны быть:
[1] 15
[1] 22
[1] 19
[1] 11Объяснение: Цикл проверяет каждый элемент на соответствие порогу (10). Элементы 15, 22, 19 и 11 больше или равны 10, поэтому они выводятся на печать. Элементы 4, 8 и 6 пропускаются.
Шпаргалка
Цикл for позволяет перебирать элементы вектора по одному и применять пользовательскую логику к каждому элементу.
Базовый синтаксис для перебора вектора в цикле:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}На каждой итерации переменная цикла принимает значение следующего элемента вектора.
Сочетание циклов с условной логикой для выборочной обработки элементов:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}Этот шаблон полезен, когда вам нужно применять различные операции в зависимости от значения каждого элемента.
Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)
# Преобразование строки с разделителями-запятыми в числовой вектор
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# TODO: Напишите свой код ниже
# Используйте цикл for для итерации по вектору numbers
# Для каждого элемента >= threshold, выведите его с помощью print()В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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)Функции для работы со строками