While Loop em R com Exemplo

Anonim

Um loop é uma instrução que continua em execução até que uma condição seja satisfeita. A sintaxe para um loop while é a seguinte:

while (condition) {Exp}

Gráfico de fluxo de loop while

Nota : Lembre-se de escrever uma condição de fechamento em algum ponto, caso contrário, o loop continuará indefinidamente.

Exemplo 1:

Vamos examinar um exemplo muito simples para entender o conceito de loop while. Você criará um loop e, após cada execução, adicionará 1 à variável armazenada. Você precisa fechar o loop, portanto, dizemos explicitamente a R para parar o loop quando a variável atingir 10.

Nota : Se você quiser ver o valor do loop atual, você precisa envolver a variável dentro da função print ().

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

Resultado:

## 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

Exemplo 2:

Você comprou uma ação ao preço de 50 dólares. Se o preço cair abaixo de 45, queremos vendê-lo a descoberto. Caso contrário, mantemos em nosso portfólio. O preço pode oscilar entre -10 a +10 em torno de 50 após cada loop. Você pode escrever o código da seguinte maneira:

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

Resultado:

## [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)

Resultado:

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