본문 바로가기
R/programming

[R] switch 조건문 이해하기 (feat. ifelse)

by R파고 Py파고 2022. 4. 8.

R에는 기본적으로 제공되는 조건구문이 있습니다.
예를 들어 ififelse 같은 것들이죠


여기 또 다른 녀석이 있습니다.

switch 이죠. 오늘은 switch는 어떤 녀석인지 한번 알아봅시다.

1. switch 의 구조



temp <- c(1,3,51,2,3,45,1,5,634,1534)
expr # a 또는 b
switch(expr, a=min(temp), b=max(temp),...)




switch는 우선 expr 인자를 받습니다.

만약 expr가 a인 경우, min(temp) 를 실행하고, b인 경우 max(temp) 를 실행하는 것이죠.

expr가 a인 경우 1이, b인 경우에는 1534가 출력되겠네요.



2. ifelse와의 비교

그렇다면 switch는 다른 조건절과 어떻게 다를까요?
R에서 조건문으로 자주 활용되는 ifelse와 비교해볼까요?



ifelse(expr=='a', min(temp), max(temp))



ifelse의 경우는 expr가 a인 경우 min(temp)를 실행하고, 그렇지 않으면 max(temp)를 실행하라는 것이죠.

따라서 expr가 'a'라면 min(temp) 값인 1을, 'b'라면 max(temp) 값인 1534를 출력하겠네요.

switchifelse와 다른 점은 else 구문이 없다는 것입니다. switch는 미리 지정된 expr 에만 결과값을 출력합니다.
그렇지 않은 경우, 아무 값도 출력하지 않습니다.

 

3. switch 실습해보기

 

switch는 사용자 지정 함수로 조건절을 사용할 때 쓰면 좋을 것 같습니다.

간단한 함수를 만들어볼까요?


irisSummary <- function(type,col){
  x <- switch(type, 
              min=min(iris[[col]]), 
              max=max(iris[[col]]), 
              mean=mean(iris[[col]]), 
              median=median(iris[[col]]))
  return(x)
}

irisSummary(type='min', col='Sepal.Length')
# [1] 4.3



iris 데이터셋에서 특정 변수의 통계량을 선택해서 내는 함수를 만들었습니다.
Sepal.Length의 최솟값 (min)을 구할 수 있었습니다.

댓글