4.3 switch()

switch()는 if()와 비슷한 조건함수입니다. 조건이 많을때 코드를 간결하게 표현하기 위해서 if() 대신 사용하기도 합니다.

switch(지시값, 지시값1 = 실행1, 지시값2 = 실행2, 지시값3....)
x <- "한국인"
switch(x,
       "영국인" = print("영국인입니다!"),
       "한국인" = print("한국인입니다!"),
       "미국인" = print("미국인입니다!"),
       stop("지시값이 정확하지 않습니다!")
)
#> [1] "한국인입니다!"

지시값을 직접 텍스트로 입력하지 않아도 됩니다. 숫자를 입력하면 해당 순서에 있는 것이 출력됩니다.

x <- 2
switch(x,
       "영국인" = print("영국인입니다!"),
       "한국인" = print("한국인입니다!"),
       "미국인" = print("미국인입니다!"),
       stop("지시값이 정확하지 않습니다!")
)
#> [1] "한국인입니다!"

아래 예제는 R 도움말에 있는 예제를 활용한 것입니다. 평균, 중위수 등을 선택해서 사용하도록 하는 함수를 만들었습니다.

center <- function(x, type) {
  switch(type,
         mean = mean(x),
         median = median(x),
         trimmed = mean(x, trim = .1),
         stop("type 값을 잘못 입력하였습니다!")
         )
}
set.seed(123)
x <- sample(x=1:30, size=10, replace=T)
center(x, "mean")
#> [1] 13.7
center(x, "median")
#> [1] 14.5
center(x, 2)  # median 호출
#> [1] 14.5