Menu
Coddy logo textTech

switch() 함수

Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 47번째.

switch(x, name = value, ...)는 텍스트 x를 이름들과 비교하고 일치하는 항목의 값을 반환합니다. 동일한 변수에 대한 긴 else if 비교 연쇄를 대체합니다:

size <- "m"
price <- switch(size, s = 2.5, m = 3, l = 3.5)
print(price)

출력:

[1] 3

이름이 없는 마지막 값은 어떤 항목도 일치하지 않을 때 사용되는 기본값입니다. 기본값이 없으면 일치하지 않는 switch()는 NULL을 표시 없이 반환합니다.

day <- "fri"
print(switch(day, sat = "rest", sun = "rest", "work"))
print(is.null(switch("x", a = 1)))

출력:

[1] "work"
[1] TRUE

빈 값은 다음 값으로 넘어가므로 여러 이름이 하나의 결과를 공유할 수 있습니다:

kind <- function(day) switch(day, sat = , sun = "weekend", "weekday")
print(kind("sun"))
print(kind("tue"))

출력:

[1] "weekend"
[1] "weekday"

값은 중괄호로 묶인 코드의 전체 블록일 수 있으며, 그 결과는 실행되는 블록의 마지막 표현식입니다.

area <- function(shape, a, b = a) {
  switch(shape,
    square = a^2,
    rect = a * b,
    circle = {
      r <- a / 2
      round(pi * r^2, 2)
    },
    NA)
}
print(area("rect", 3, 4))
print(area("circle", 10))

출력:

[1] 12
[1] 78.54
challenge icon

챌린지

쉬움

calculate(a, op, b)를 완성하세요. op는 plus, minus, times, over 중 하나입니다. a와 b에 해당 연산을 적용한 결과를 반환하고, 다른 op가 주어지면 unknown operation을 반환하세요. 0으로 나누면 cannot divide by zero를 반환합니다.

제공된 코드는 a, op, b를 한 줄에 하나씩 읽고 반환된 값을 출력합니다.

직접 해보기

calculate <- function(a, op, b) {
  # 여기에 코드를 작성하세요
  "unknown operation"
}

# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), sep = "\n")
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 R 컴파일러