워라밸 중독자

[R] 프로그래밍 - 조건문 및 반복문 (if, ifelse, for, while) 본문

카테고리 없음

[R] 프로그래밍 - 조건문 및 반복문 (if, ifelse, for, while)

Ufungi 2023. 1. 22. 17:24

프로그래밍이란?

컴퓨터가 문제를 해결할 수 있도록 절차를 서술하는 행위를 프로그래밍이라 함.

조건문

if ()

조건이 참이면 실행, 조건이 거짓이면 다른 실행

이 때 조건의 결과는 참/거짓으로 나와야 하므로 논리 연산자가 들어가야한다 (논리 연산자에 대한 설명은 아래 글 참고)

 

[R] 1차원 데이터 구조 - 벡터의 연산 (산술연산, 논리연산, 함수)

[R] 벡터(vector) 정의 및 생성 벡터(vector)란? 동일한 자료형(정수, 실수, 문자, 논리)의 값이 연속적으로 나열된 자료구조이다. 엑셀에서 '한 행'에 해당하며 일차원 데이터를 저장한다. 벡터 만들기

ufungi.tistory.com

if (조건) {조건이 참이면 실행} else {조건이 거짓이면 실행}

참고로 else 문은 없어도 실행된다.

if (조건) {
  조건이 참이면 실행
}

# 또는 
if (조건) {
  조건이 참이면 실행
} else {
  조건이 거짓이면 실행
}

1. 조건이 참일때

a <- 6
if (a>5){
  print(a)
} else {
  print(a*10)
  print(a/10)
}
[1] 6

2. 조건이 거짓일때

a <- 4
if (a>5){
  print(a)
} else {
  print(a*10) #4*10
  print(a/10) #4/10
}
[1] 40
[1] 0.4

3. 다중 조건 (else 문 생략)

a <- 10
b <- 20

# 두 가지 조건 전부 만족시 참
if (a > 5 & b > 5){
  print(a+b)
}
[1] 30

# 두 가지 조건 중 하나만 만족해도 참
if (a > 5 | b > 30){
  print(a+b)
}
[1] 30

ifelse ()

if, else를 합쳐서 간단하게 ifelse문으로 표현할 수 있다.

ifelse (조건, 조건이 참이면 실행, 조건이 거짓이면 실행)

 

a <- 10
b <- 20
ifelse(a > b, a, b)
[1] 20

a보다 b가 크므로 a > b는 거짓이고 따라서 b가 출력된다.

반복문

for ()

어떤 변수에 대한 특정 실행을 몇 번 반복할지 아는 경우 사용

for (변수 in 범위) {반복 실행할 작업}

for (i in 1:10) {
  print(3*i)
}
[1] 3
[1] 6
[1] 9
[1] 12
[1] 15
[1] 18
[1] 21
[1] 24
[1] 27
[1] 30

print()는 하나의 숫자 또는 문자만 출력해주지만 cat()을 이용하면 다양한 문자를 포함시킬 수도 있다.

아래 예시에서는 위의 예시와 값은 같지만 콤마(,) 로 나눠진 순서대로 문자 또는 숫자가 출력되고 "\n"을 이용해 개행하였다.

for (i in 1:10) {
  cat("3 *",i,"=",3*i,"\n")
}
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 
3 * 10 = 30

아래 예시는 for 문 안에 새로운 변수를 추가하여 1부터 10까지의 합을 구해보았다.

* 변수 초기화의 필요성: sum의 값을 미리 지정해주지 않으면 error 발생!

# 1부터 10 까지 순차적으로 더하고 매번 출력
sum = 0
for(i in 1:10) {
  sum <- sum + i
  print(sum)
}
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
[1] 21
[1] 28
[1] 36
[1] 45
[1] 55

# 1부터 10 까지 순차적으로 더하고 마지막 값 출력
sum = 0
for(i in 1:10) {
  sum <- sum + i
}
print(sum)
[1] 55

혼합: for () + if ()

for문과 if문을 함께 사용하면 특정 범위에서 특정 조건을 만족하는 변수들에 대해서만 특정 실행이 가능하다.

아래 예시는 1:15의 범위에 있는 변수들 중 짝수인 것들만 출력하도록 하였다.

for(i in 1:15) {
  if(i%%2==0) {
    print(i)}
}
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10
[1] 12
[1] 14

while ()

while (변수 w/ 조건) {반복 실행할 작업}

조건이 참일 때 까지만 반복 수행하고 거짓이 나오면 stop. if 와 달리 반복 횟수에 변동이 있을 경우 사용.

아래 예시는 i = 1부터 시작하여 i가 5보다 작거나 같을 경우 출력하고 i에 1씩 계속 더해나가는 프로그램이다.

i <- 1
while (i<=5){
  print(i)
  i <- i+1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5