반복문
R의 반복문에는 for, while, repeat 문이 있다. 다음은 이 세 가지 문법을 설명한 표다.
문법 |
의미 |
for (i in data) {
i를 사용한 문장
}
|
data에 들어 있는 각각의 값을 변수 i에 할당하면서 각각에 대해 블록 안의 문장을 수행한다. |
while (cond) {
조건이 참일 때 수행할 문장
}
|
조건 cond가 참일 때 블록 안의 문장을 수행한다. |
repeat {
반복해서 수행할 문장
}
|
블록 안의 문장을 반복해서 수행한다. repeat은 다른 언어의 do-while에 해당한다. |
반복문 내 블록에서는 break, next 문을 사용해 반복의 수행을 조정할 수 있다.
• break : 반복문을 종료한다.
• next : 현재 수행 중인 반복문 블록의 수행을 중단하고 다음 반복을 시작한다.
다음 코드에서 for 문은 변수 i가 주어진 벡터에 있는 1, 2, 3, …, 10을 차례로 출력한다.
> for (i in 1:10) { + print(i) + } [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10
다음 while 문은 1부터 10까지 숫자를 출력하기 위해 변수 i의 값을 10과 비교하면서 print( )하는 예다.
> i <- 1 > while (i <= 10) { + print(i) + i <- i + 1 + } [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10
while 문에서 next를 사용해 짝수만 출력해보자. 값이 짝수인지 확인하는 데는 나머지 연산자 %%를 사용했다.
> i <- 0 > while (i <= 9) { + i <- i + 1 + if (i %% 2 != 0) { + next # print()를 실행하지 않고 while 문의 처음으로 감 + } + print(i) + } [1] 2 [1] 4 [1] 6 [1] 8 [1] 10
다음은 repeat을 사용해서 1부터 10까지 값을 출력한 예다. repeat 문에서 조건을 지정하려면 블록 내부에서 if 문으로 조건을 확인하고 break로 빠져나오도록 해야 한다.
> i <- 1 > repeat { + print(i) + if (i >= 10) { + break + } + i <- i + 1 + } [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10