R voor lus


Voor lussen

Een forlus wordt gebruikt om een ​​reeks te herhalen:

Voorbeeld

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

Dit lijkt minder op het forsleutelwoord in andere programmeertalen, en werkt meer als een iteratormethode zoals gevonden in andere objectgeoriënteerde programmeertalen.

Met de forlus kunnen we een reeks instructies uitvoeren, één keer voor elk item in een vector, array, lijst, enz.

In een later hoofdstuk leer je over lijsten en vectoren , enz.

Voorbeeld

Print elk item in een lijst:

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

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

Voorbeeld

Print het aantal dobbelstenen:

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

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

De forlus vereist geen indexeringsvariabele om vooraf in te stellen, zoals bij whilelussen.


Pauze

Met de breakinstructie kunnen we de lus stoppen voordat deze alle items heeft doorlopen:

Voorbeeld

Stop de lus bij "cherry":

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

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

De lus stopt bij "cherry" omdat we ervoor hebben gekozen om de lus af te sluiten met het breakstatement when xis gelijk aan "cherry" ( x == "cherry").


Volgende

Met de nextinstructie kunnen we een iteratie overslaan zonder de lus te beëindigen:

Voorbeeld

Sla "banaan" over:

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

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

Wanneer de lus "banaan" passeert, zal deze deze overslaan en doorgaan met de lus.


Jahtzee!

If .. Else Gecombineerd met een For Loop

Laten we, om een ​​praktisch voorbeeld te demonstreren, zeggen dat we een spelletje Yahtzee!

Voorbeeld

Afdrukken "Yahtzee!" Als het dobbelsteennummer 6 is:

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

Als de lus de waarden tussen 1 en 5 bereikt, wordt "No Yahtzee" en zijn nummer afgedrukt. Wanneer het de waarde 6 bereikt, drukt het "Yahtzee!" en zijn nummer.


Geneste lussen

Je kunt ook een lus in een lus hebben:

Voorbeeld

Druk het bijvoeglijk naamwoord van elke vrucht af in een lijst:

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

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