While Loop in R met Voorbeeld

Anonim

Een lus is een instructie die blijft lopen totdat aan een voorwaarde is voldaan. De syntaxis voor een while-lus is de volgende:

while (condition) {Exp}

Terwijl Loop Flow Chart

Opmerking : vergeet niet om op een bepaald moment een sluitingsvoorwaarde te schrijven, anders zal de lus voor onbepaalde tijd doorgaan.

Voorbeeld 1:

Laten we een heel eenvoudig voorbeeld bekijken om het concept van while-lus te begrijpen. U maakt een lus en voegt na elke run 1 toe aan de opgeslagen variabele. Je moet de lus sluiten, daarom vertellen we R expliciet dat hij moet stoppen met lussen wanneer de variabele 10 bereikt.

Opmerking : als u de huidige luswaarde wilt zien, moet u de variabele in de functie print () plaatsen.

#Create a variable with value 1begin <- 1#Create the loopwhile (begin <= 10){#See which we arecat('This is loop number',begin)#add 1 to the variable begin after each loopbegin <- begin+1print(begin)}

Uitgang:

## This is loop number 1[1] 2## This is loop number 2[1] 3## This is loop number 3[1] 4## This is loop number 4[1] 5## This is loop number 5[1] 6## This is loop number 6[1] 7## This is loop number 7[1] 8## This is loop number 8[1] 9## This is loop number 9[1] 10## This is loop number 10[1] 11

Voorbeeld 2:

U kocht een aandeel tegen een prijs van 50 dollar. Als de prijs onder de 45 komt, willen we hem shorten. Anders houden we het in onze portefeuille. De prijs kan schommelen tussen -10 en +10 rond de 50 na elke lus. U kunt de code als volgt schrijven:

set.seed(123)# Set variable stock and pricestock <- 50price <- 50# Loop variable counts the number of loopsloop <- 1# Set the while statementwhile (price > 45){# Create a random price between 40 and 60price <- stock + sample(-10:10, 1)# Count the number of looploop = loop +1# Print the number of loopprint(loop)}

Uitgang:

## [1] 2## [1] 3## [1] 4## [1] 5## [1] 6## [1] 7
cat('it took',loop,'loop before we short the price. The lowest price is',price)

Uitgang:

## it took 7 loop before we short the price.The lowest price is 40