R에는 기본적으로 제공되는 조건구문이 있습니다.
예를 들어 if
나 ifelse
같은 것들이죠
여기 또 다른 녀석이 있습니다.
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를 출력하겠네요.
switch
가 ifelse
와 다른 점은 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
)을 구할 수 있었습니다.
댓글