R для цикла


Для циклов

Цикл forиспользуется для перебора последовательности:

Пример

for (x in 1:10) {
  print(x)
}

Это меньше похоже на forключевое слово в других языках программирования и работает больше как метод итератора, который можно найти в других объектно-ориентированных языках программирования.

С помощью forцикла мы можем выполнить набор операторов, один раз для каждого элемента в векторе, массиве, списке и т. д.

Вы узнаете о списках , векторах и т. д. в следующей главе.

Пример

Распечатать каждый элемент в списке:

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  print(x)
}

Пример

Выведите количество кубиков:

dice <- c(1, 2, 3, 4, 5, 6)

for (x in dice) {
  print(x)
}

Цикл forне требует предварительной установки индексирующей переменной, как в whileциклах.


Ломать

С помощью этого breakоператора мы можем остановить цикл до того, как он пройдет через все элементы:

Пример

Остановите цикл на «вишне»:

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  if (x == "cherry") {
    break
  }
  print(x)
}

Цикл остановится на «вишне», потому что мы решили закончить цикл, используя breakоператор when xравно «вишне» ( x == "cherry").


Следующий

С nextоператором мы можем пропустить итерацию, не прерывая цикл:

Пример

Пропустить "банан":

fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  if (x == "banana") {
    next
  }
  print(x)
}

Когда цикл проходит «банан», он пропускает его и продолжает цикл.


Ятзи!

If .. Else в сочетании с циклом for

Чтобы продемонстрировать практический пример, предположим, что мы играем в игру Yahtzee!

Пример

Печать "Яхтзи!" Если число костей равно 6:

dice <- 1:6

for(x in dice) {
  if (x == 6) {
    print(paste("The dice number is", x, "Yahtzee!"))
  } else {
    print(paste("The dice number is", x, "Not Yahtzee"))
  }
}

Если цикл достигает значений от 1 до 5, он печатает «No Yahtzee» и его номер. Когда он достигает значения 6, он печатает «Yahtzee!» и его номер.


Вложенные циклы

Вы также можете иметь цикл внутри цикла:

Пример

Выведите прилагательное каждого фрукта в списке:

adj <- list("red", "big", "tasty")

fruits <- list("apple", "banana", "cherry")
  for (x in adj) {
    for (y in fruits) {
      print(paste(x, y))
  }
}