Menu
Coddy logo textTech

Итерация по элементам вектора

Часть раздела Основы путешествия по 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

Этот паттерн полезен, когда вам нужно применить различные операции на основе значения каждого элемента — то, с чем векторизованные операции сами по себе не всегда могут справиться.

challenge icon

Задание

Легко

Вы получите две строки входных данных:

  1. Список чисел, разделенных запятыми (например, 12,5,18,3,25,8,14)
  2. Пороговое значение (например, 10)

Используя цикл for для итерации по элементам вектора:

  1. Создайте вектор из чисел, разделенных запятыми
  2. Пройдите циклом по каждому элементу вектора
  3. Для каждого элемента, который больше или равен пороговому значению, выведите этот элемент с помощью функции 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()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы