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))
}
}