본문 바로가기
  • "You can't manage what you can't measure" Peter Drucker
데이터 분석 (with Rstudio)

[Rstudio] 루프(Loop) 반복문 - for 루프 문과 while 루프 문

by Vitaminymc 2024. 3. 26.
반응형

[ 루프 (Loop) 반복문 ]

루프(Loop)는 프로그래밍에서 반복 작업을 수행하기 위해 사용되는 제어 구조이다. 주어진 조건이 참(True)인 동안 코드 블록을 반복적으로 실행한다. R에서는 주로 for 루프와 while 루프를 사용한다.

[ for 루프 문과 while 루프 문 비교 ]

for 루프는 반복 횟수가 명확하고 구조적인 작업에, while 루프는 특정 조건이 충족될 때까지 반복해야 하는 상황에 유용

  for 루프 while 루프
구조  for 루프는 주어진 조건 범위 내에서 반복 작업을 수행

일반적으로 반복 범위에 해당하는 변수를 사용하여 루프를 정의
초기화, 조건 검사, 증감 등의 구문을 한 줄에 표현할 수 있어서 코드가 간결
while 루프는 주어진 조건이 참(True)인 동안에만 반복 작업을 수행

루프를 시작하기 전에 종료 조건을 검사하므로 초기화, 조건 검사, 증감 등을 명시적으로 처리 필요


종료 조건 시작부터 종료까지의 반복 범위를 명시적으로 지정 루프 내에서 조건을 검사하여 반복을 중단하거나 계속할지 결정
사례 반복 횟수가 명확할 때 주로 사용

예) 특정 횟수만큼 반복하거나, 컬렉션(예: 배열, 리스트)의 각 요소에 접근하여 작업을 수행할 때 유용
반복 횟수가 명확하지 않거나, 특정 조건이 충족될 때까지 반복해야 할 때 주로 사용
예) 사용자 입력을 받거나, 특정 조건이 만족될 때까지 작업을 수행할 때 유용

[ for 루프 문 ]

[ 기본 예제 ]

일반적으로 반복 범위에 해당하는 변수를 정의하고, 그 변수가 범위 내에서 변화하면서 반복 작업 실행

for (변수 in 시퀀스 또는 벡터) {
  반복 실행할 코드
}
k = 0

for (i in 1:10) {
  
  k <- k + i
  
  print (k)
  
}
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
[1] 21
[1] 28
[1] 36
[1] 45
[1] 55

[ for 루프로 n씩 증가시키기 ]

for (변수 in seq (시작, 종료, by = n ) {
  반복 실행할 코드
}

by는 안 써도 됨

for (i in seq(1, 20, 2)) {
  
  print (i)
  
}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
[1] 13
[1] 15
[1] 17
[1] 19
for (i in seq(1, 20, by = 3)) {
  
  print (i)
  
}
[1] 1
[1] 4
[1] 7
[1] 10
[1] 13
[1] 16
[1] 19
for (i in seq(10, 1, by = -1)) {
  
  print (i)
  
}
[1] 10
[1] 9
[1] 8
[1] 7
[1] 6
[1] 5
[1] 4
[1] 3
[1] 2
[1] 1

[ while 루프 문 ]

[ 기본 예제 ]

while 루프는 주어진 조건이 참(True)인 동안에만 반복 작업을 수행하므로, 반복이 끝나는 조건을 지정해야 함

while (조건) {
  반복 실행할 코드
}
k <- 0
i <- 1

while (i < 11) {
  k <- k + i
  cat (i, "-", k, "\n")
  i <- i + 1
  }
1 - 1 
2 - 3 
3 - 6 
4 - 10 
5 - 15 
6 - 21 
7 - 28 
8 - 36 
9 - 45 
10 - 55 
print (i)
[1] 11

[ while 루프로 n씩 증가시키기 ]

x <- 1
while (x <= 20) {
  print(x)
  x <- x + 2
}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
[1] 13
[1] 15
[1] 17
[1] 19

[ 중첩 for 루프 문 (for문 안에 for문) ]

# 2차원 배열 생성
array <- matrix(1:9, nrow = 3, byrow = TRUE)

# 중첩된 for 루프
for (i in 1:nrow(array)) {
  for (j in 1:ncol(array)) {
    cat (array[i, j], "  ")
  }
  cat ("\n")
}
1   2   3   
4   5   6   
7   8   9   

728x90