15.2 while
반복구문
While
루프는 조건 테스트로 시작됩니다. TRUE
이면 명령문을 실행합니다. 명령문이 실행되면 조건이 다시 테스트되고 조건이 FALSE
가 될 때까지 계속해서 반복하다가 루프가 종료됩니다. while
내의 블록이 몇 번 반복되었는가를 확인하기 위한 counter
개체를 포함하는 것도 좋은 방법입니다.
while
반복구문의 플로우 차트는 다음과 같습니다.
while
반복구문의 형식은 다음과 같습니다.
# while 반복구문의 형식
counter <- 1 # 반복횟수 확인을 위한 counter 입니다.
while(test_expression) { # while 반복구문의 시작입니다.
statement # 반복할 명령문을 기입합니다.
counter <- counter + 1 # counter를 1증가 시킵니다.
}
while
루프는 잘못 작성되면 잠재적으로 무한 루프가 발생할 수 있습니다. 따라서 주의해서 사용해야 합니다.
for
반복구문과 while
반복구문이 얼마나 유사한 지 다음의 예에서 살펴보겠습니다.
## for 반복구문과 while 반복구문은 매우 유사합니다.
# while 반복구문의 예입니다.
<- 1 # counter를 1로 설정합니다.
counter
while(counter <= 10) { # while 반복구문의 시작입니다.
print(counter) # counter를 출력합니다.
<- counter + 1 # counter를 1증가 시킵니다.
counter }
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
# 위와 같은 결과를 가져오는 for 반복구문입니다.
<- vector(mode = "numeric", length = 10) # counter 변수를 정의합니다.
counter
for(i in 1:length(counter)) { # for 반복구문의 시작입니다.
print(i) # i를 출력합니다.
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
for
루프와 while
루프의 주요 차이점은 다음과 같습니다. 코드가 실행되어야 하는 반복 횟수가 알려져있을 때 for
루프가 사용되며, 반복 횟수가 사전에 미리 정해져 있지 않은 경우에 while
루프가 사용됩니다. 예를 들어, 다음은 x
값을 취하고 x
가 조건식에 있는 값 9
를 초과할 때까지 x
에서 임의로 1
을 더하거나 뺍니다. output
은 x
의 값이 조건식의 임계값인 9
를 초과 할 때까지 코드가 14
번 실행되었음을 보여줍니다.
# for 반복구문과 while 반복구문의 차이를 비교합니다.
<- 1 # counter의 초기값으로 1로 설정합니다.
counter <- 5 # x의 초기값으로 5을 설정합니다.
x set.seed(3) # 난수의 초기값을 지정합니다.
while(x >= 3 && x <= 8 ) { # while 반복구문의 시작입니다.
<- rbinom(1, 1, 0.5) # 이항분포인 난수를 발생하여 coin에 할당합니다.
coin
if(coin == 1) { ## random walk # coin 값이 1인지 확인합니다. # coin 값이 1이면
<- x + 1 # x에 1을 더합니다.
x else { # coin 값이 1이 아니면
} <- x - 1 # x에서 1을 뺍니다.
x
}cat("On iteration", counter, ", x =", x, '\n') # 블록 실행결과를 출력합니다.
<- counter + 1 # counter를 1증가 시킵니다.
counter }
## On iteration 1 , x = 4
## On iteration 2 , x = 5
## On iteration 3 , x = 4
## On iteration 4 , x = 3
## On iteration 5 , x = 4
## On iteration 6 , x = 5
## On iteration 7 , x = 4
## On iteration 8 , x = 3
## On iteration 9 , x = 4
## On iteration 10 , x = 5
## On iteration 11 , x = 6
## On iteration 12 , x = 7
## On iteration 13 , x = 8
## On iteration 14 , x = 9