반응형
◎ for
for ( i in 열거형객체 ) { } |
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>
반응형
'R > Data Operation' 카테고리의 다른 글
R apply 계열 함수/replicate/sweep/aggregate (0) | 2020.11.16 |
---|---|
R 벡터 Vector 관련 내장함수 (0) | 2020.11.10 |
R 산술/관계/비교/논리연산자와 벡터연산 (0) | 2020.11.05 |
R 함수 Function - 함수정의/함수인자/재귀중첩함수 (0) | 2020.11.03 |
R 조건문 - if/ifelse/switch/which (0) | 2020.10.27 |
댓글