본문 바로가기
R/Data Operation

R 반복문 - for/while/repeat/break와 next

by 통계열등생 2020. 11. 3.
반응형

 ◎ for

 

for ( i in 열거형객체 ) {
        i를 사용한 실행문

}

for 문은 열거형객체 안의 원소를 차례로 i에 할당하여 블록 안의 실행문을 반복 실행한다. 실행문이 하나일 경우 중괄호는 생략가능하다.

열거형객체는 벡터가 될 수도 있고, 데이터프레임이 될 수도 있다. 

> num = scan()
1: 77
2: 52
3: 100
4: 29
5: 0
6: 
Read 5 items
> num
[1]  77  52 100  29   0
>
> for(i in num) {
+   if(i %% 2 == 0) cat(i,'= 짝수\n') else cat(i,'= 홀수\n')
+ }
77 = 홀수
52 = 짝수
100 = 짝수
29 = 홀수
0 = 짝수

scan() 함수는 Console(콘솔)창에서 값을 입력할 수 있고, 엔터를 한번 더 치면 값이 저장된다.

저장된 객체를 for문으로 하나씩 불러와 짝수와 홀수를 판별하는 코딩이다. 

 

> for(i in 2:9) {
+   cat('***', i, '단 ***\n')
+   for(j in 1:9) cat(i, '*', j, '=', i*j, '\n')
+   cat('\n')
+ }
*** 2 단 ***
2 * 1 = 2 
2 * 2 = 4 
2 * 3 = 6 
2 * 4 = 8 
2 * 5 = 10 
2 * 6 = 12 
2 * 7 = 14 
2 * 8 = 16 
2 * 9 = 18 

*** 3 단 ***
3 * 1 = 3 
3 * 2 = 6 
3 * 3 = 9 
3 * 4 = 12 
3 * 5 = 15 
3 * 6 = 18 
3 * 7 = 21 
3 * 8 = 24 
3 * 9 = 27 

*** 4 단 ***
4 * 1 = 4 
4 * 2 = 8 
4 * 3 = 12 
4 * 4 = 16 
4 * 5 = 20 
4 * 6 = 24 
4 * 7 = 28 
4 * 8 = 32 
4 * 9 = 36 

*** 5 단 ***
5 * 1 = 5 
5 * 2 = 10 
5 * 3 = 15 
5 * 4 = 20 
5 * 5 = 25 
5 * 6 = 30 
5 * 7 = 35 
5 * 8 = 40 
5 * 9 = 45 

*** 6 단 ***
6 * 1 = 6 
6 * 2 = 12 
6 * 3 = 18 
6 * 4 = 24 
6 * 5 = 30 
6 * 6 = 36 
6 * 7 = 42 
6 * 8 = 48 
6 * 9 = 54 

*** 7 단 ***
7 * 1 = 7 
7 * 2 = 14 
7 * 3 = 21 
7 * 4 = 28 
7 * 5 = 35 
7 * 6 = 42 
7 * 7 = 49 
7 * 8 = 56 
7 * 9 = 63 

*** 8 단 ***
8 * 1 = 8 
8 * 2 = 16 
8 * 3 = 24 
8 * 4 = 32 
8 * 5 = 40 
8 * 6 = 48 
8 * 7 = 56 
8 * 8 = 64 
8 * 9 = 72 

*** 9 단 ***
9 * 1 = 9 
9 * 2 = 18 
9 * 3 = 27 
9 * 4 = 36 
9 * 5 = 45 
9 * 6 = 54 
9 * 7 = 63 
9 * 8 = 72 
9 * 9 = 81 

이중 for문을 사용해 구구단을 출력해보았다.

 

 

 

 ◎ while

 

while ( 조건식 ) {
        조건이 참일 때 수행할 실행문
}

while 문은 조건식이 참일 경우 실행문을 반복하여 실행한다. 따라서 언젠가는 조건식이 거짓이 될 수 있도록 만들어 주어야 무한히 실행되는 것을 막을 수 있다.

> i = 0
> while(i < 5) {
+   cat('i =', i, '\n')
+   i = i + 1
+ }
i = 0 
i = 1 
i = 2 
i = 3 
i = 4 
> n = 10
> for(k in 1:n){
+   i = 1
+   while(i <= k) {cat('* '); i = i + 1}
+   cat('\n')
+ }
* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * * 
* * * * * * * 
* * * * * * * * 
* * * * * * * * * 
* * * * * * * * * * 

객체에 양의 정수를 저장하면 각 행의 '*' 개수가 하나씩 증가해 마지막에 정수만큼의 출력되도록 while문을 사용하여 프로그램을 작성하였다.

 

 

 

 ◎ repeat

 

repeat {
        반복해서 수행할 실행문
}

repeat 문은 블록 안의 실행문을 반복적으로 실행하게 한다. 따라서 언젠가는 반복이 중지되도록 만들어 주어야 한다. 그렇지 않으면 무한히 실행된다.

> total = 0
> i = 1
> repeat { 
+   if(i > 100) break
+   total = total + i
+   i = i + 1 
+ }
> cat(total, '\n')
5050 

 

 

 

 ◎ break와 next

 

> for(i in 1:10) {
+   if(i %% 2 == 0) break
+   print(i)
+ }
[1] 1

break : 반복문을 종료한다. 

 

> for(i in 1:10) {
+   if(i %% 2 == 0) next
+   print(i)
+ }
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9

next : 현재 수행 중인 반복문의 위치에서 하위 문장들의 실행 건너뛰고 다음 반복을 계속한다. 

 

 

 

 

 

<R 반복문 - for/while/repeat/break와 next>

반응형

댓글