조건문과 반복문은 프로그래밍에서 매우 중요한 기본 개념입니다.
R에서도 이들을 활용하여 복잡한 논리적 흐름을 제어하고, 반복 작업을 수행할 수 있습니다.
이번 글에서는 조건문과 반복문의 기본 구조와 사용법, 그리고 break와 next를 사용한 반복문 제어 방법을 체계적으로 설명하겠습니다.
조건문 (if, else, else if)의 사용법
조건문은 프로그램이 특정 조건에 따라 다른 일을 하도록 할 때 사용됩니다. 이를 통해 코드가 조건에 맞게 실행될 수 있습니다.
R에서 조건문은 if, else if, else 키워드를 사용해 구현할 수 있습니다.
if 조건문
if 조건문은 가장 기본적인 형태의 조건문입니다. 조건이 참(TRUE)일 때만 특정 코드를 실행합니다.
구조:
if (조건) {
# 조건이 참일 때 실행될 코드
}
예시:
x <- 10
if (x > 5) {
print("x는 5보다 큽니다.")
}
위 코드에서 x가 10이기 때문에, x > 5 조건은 참(TRUE)이 됩니다. 따라서 print("x는 5보다 큽니다.")가 실행되어 메시지를 출력합니다.
else if 조건문
else if는 첫 번째 if 조건이 거짓(FALSE)일 때, 추가로 다른 조건을 검사할 수 있도록 합니다.
구조:
if (조건1) {
# 조건1이 참일 때 실행될 코드
} else if (조건2) {
# 조건1이 거짓이고 조건2가 참일 때 실행될 코드
}
예시:
x <- 3
if (x > 5) {
print("x는 5보다 큽니다.")
} else if (x == 3) {
print("x는 3입니다.")
}
여기서 x가 3이므로 첫 번째 조건(x > 5)은 거짓(FALSE)입니다.
그러나 두 번째 조건(x == 3)은 참(TRUE)이므로 "x는 3입니다."라는 메시지가 출력됩니다.
else 조건문
else는 모든 if와 else if 조건이 거짓일 때 실행될 코드를 지정합니다.
구조:
if (조건1) {
# 조건1이 참일 때 실행될 코드
} else if (조건2) {
# 조건1이 거짓이고 조건2가 참일 때 실행될 코드
} else {
# 위의 모든 조건이 거짓일 때 실행될 코드
}
예시:
x <- 2
if (x > 5) {
print("x는 5보다 큽니다.")
} else if (x == 3) {
print("x는 3입니다.")
} else {
print("x는 5보다 작고 3도 아닙니다.")
}
이 경우, x가 2이므로 첫 번째와 두 번째 조건이 모두 거짓입니다.
따라서 else 블록이 실행되어 "x는 5보다 작고 3도 아닙니다."라는 메시지가 출력됩니다.
ifelse() 함수
R에서 ifelse() 함수는 벡터화된 조건문을 구현하는 데 매우 유용합니다.
이 함수는 if-else 구조를 벡터 단위로 간단하게 적용할 수 있게 해줍니다.
구조:
ifelse(조건, 참일 때 값, 거짓일 때 값)
예시:
x <- c(2, 7, 5, 8, 1)
result <- ifelse(x > 5, "크다", "작다")
print(result)
# 결과: "작다" "크다" "작다" "크다" "작다"
이 코드는 x의 각 요소에 대해 조건(x > 5)을 검사하고, 조건이 참이면 "크다", 거짓이면 "작다"를 반환하는 벡터를 생성합니다.
ifelse()는 벡터화되어 있어 매우 효율적입니다.
중첩 조건문
조건문을 중첩하여 복잡한 논리 구조를 만들 수 있습니다. 중첩 조건문은 하나의 조건문 안에 또 다른 조건문을 포함하는 방식입니다.
x <- 10
y <- 5
if (x > 5) {
if (y < 10) {
print("x는 5보다 크고, y는 10보다 작습니다.")
} else {
print("x는 5보다 크고, y는 10 이상입니다.")
}
} else {
print("x는 5 이하입니다.")
}
여기서는 x가 5보다 크기 때문에 첫 번째 if 블록이 실행되고, 그 안에서 y에 대한 추가 조건이 검사됩니다.
이처럼 중첩 조건문은 여러 조건을 복합적으로 검사해야 할 때 유용합니다.
반복문 (for, while)의 기본 구조와 사용법
반복문은 동일한 작업을 여러 번 수행할 때 유용합니다. R에서는 for와 while 두 가지 반복문을 주로 사용합니다.
for 반복문
for 반복문은 주어진 시퀀스나 벡터의 각 요소에 대해 반복 작업을 수행합니다. 예를 들어, 1부터 5까지의 숫자를 출력할 수 있습니다.
구조:
for (변수 in 시퀀스) {
# 반복할 코드
}
예시:
for (i in 1:5) {
print(i)
}
이 코드는 1부터 5까지의 숫자를 차례대로 출력합니다. i는 1부터 5까지 반복되며, 각 반복마다 print(i)가 실행됩니다.
while 반복문
while 반복문은 조건이 참(TRUE)일 동안 코드를 반복합니다. 반복은 조건이 거짓(FALSE)이 되면 종료됩니다.
구조:
while (조건) {
# 조건이 참일 때 반복할 코드
}
예시:
count <- 1
while (count <= 5) {
print(count)
count <- count + 1
}
이 코드는 count가 5 이하일 때까지 계속해서 count를 출력하고, count의 값을 1씩 증가시킵니다.
결과적으로 1부터 5까지의 숫자가 출력됩니다.
중첩 반복문
반복문 안에 또 다른 반복문을 넣어 반복 작업을 중첩할 수 있습니다. 중첩 반복문은 주로 2차원 데이터(예: 행렬, 데이터 프레임)를 처리할 때 유용합니다.
matrix <- matrix(1:9, nrow = 3, ncol = 3)
for (i in 1:nrow(matrix)) {
for (j in 1:ncol(matrix)) {
print(paste("행:", i, "열:", j, "값:", matrix[i, j]))
}
}
이 코드는 3x3 행렬의 각 요소에 대해 위치(i, j)와 그 값을 출력합니다. 여기서 i는 행을, j는 열을 반복하면서 각각의 요소를 처리합니다.
break와 next를 사용한 반복문 제어
반복문 내에서 특정 조건에 따라 반복을 중단하거나, 특정 반복을 건너뛸 수 있습니다.
break 문
break 문은 반복문을 즉시 종료하고, 반복문 밖의 코드로 제어를 이동시킵니다.
예시:
for (i in 1:10) {
if (i == 6) {
break
}
print(i)
}
이 코드는 1부터 5까지의 숫자만 출력됩니다. i가 6이 되면 break 문이 실행되어 반복이 중지됩니다.
next 문
next 문은 현재 반복의 나머지 코드를 건너뛰고, 다음 반복으로 넘어갑니다.
예시:
for (i in 1:10) {
if (i %% 2 == 0) {
next
}
print(i)
}
이 코드는 1부터 10까지의 숫자 중 홀수만 출력됩니다.
i가 짝수일 때 next 문이 실행되어 그 반복의 나머지 코드를 건너뛰고, 다음 반복으로 넘어갑니다.
무한 반복과 repeat 반복문
R에는 repeat 반복문도 있습니다. 이 반복문은 조건이 명시적으로 break에 의해 종료될 때까지 계속 반복합니다. 주로 무한 반복이 필요할 때 사용합니다.
구조:
repeat {
# 반복할 코드
if (조건) {
break # 조건이 참이면 반복 종료
}
}
예시:
count <- 1
repeat {
print(count)
count <- count + 1
if (count > 5) {
break
}
}
이 코드는 1부터 5까지의 숫자를 출력하고, count가 5를 넘으면 반복을 종료합니다.
조건문과 반복문은 R 프로그래밍에서 논리적 흐름을 제어하고 반복 작업을 수행하는 데 핵심적인 도구입니다. 이 글에서 소개한 다양한 구조와 사용법을 잘 익히면, 복잡한 문제를 해결하고 효율적인 코드를 작성하는 데 큰 도움이 될 것입니다.
감사합니다!
'프로그래밍 언어 > R' 카테고리의 다른 글
12. R에서의 데이터 프레임 생성 및 조작 (0) | 2024.08.31 |
---|---|
11. R의 기본 문법과 데이터 조작 심화 - 벡터와 리스트 조작 (0) | 2024.08.29 |
09. R에서 사용하는 기본 함수 이해 - 사용자 정의 함수 생성 (0) | 2024.08.25 |
08. R에서 사용하는 기본 함수 이해 (0) | 2024.08.24 |
07. R에서의 기본 연산자 이해 (산술, 비교, 논리, 결측값 처리 연산자) (0) | 2024.08.22 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!