Menu
Coddy logo textTech

키 확인하기

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

누락되었을 수 있는 키를 조회하기 전에, 이름을 대상으로 %in%을 사용해 확인하세요:

stock <- c(apples = 12, pears = 0)
print("pears" %in% names(stock))
print("plums" %in% names(stock))

출력:

[1] TRUE
[1] FALSE

조회 코드를 if로 감싸면 키가 없을 때 NA나 오류 대신 기본값을 제공합니다:

stock <- c(apples = 12, pears = 0)
item <- "plums"
qty <- if (item %in% names(stock)) stock[[item]] else 0
print(qty)

출력:

[1] 0

값이 0인 키가 존재하는 경우와 키가 없는 경우는 다릅니다. pears는 알려진 항목이며 out of stock이고, plums는 아예 판매하지 않습니다.

리스트에서도 동일한 %in% names() 검사를 사용합니다. 리스트에 없는 이름을 조회하면 오류 대신 NULL이 반환되므로 is.null()도 사용할 수 있습니다:

user <- list(name = "Ada", city = "London")
print(is.null(user[["email"]]))
print("city" %in% names(user))

출력:

[1] TRUE
[1] TRUE

작은 도우미 함수를 사용하면 프로그램이 여러 키를 조회할 때 검사를 한곳에 모아 둘 수 있습니다:

get_or <- function(x, key, default) {
  if (key %in% names(x)) x[[key]] else default
}
stock <- c(apples = 12)
print(get_or(stock, "apples", 0))
print(get_or(stock, "kiwis", 0))

출력:

[1] 12
[1] 0
challenge icon

챌린지

쉬움

stock_status(stock, item)을 완성하세요. item이 stock의 키가 아니면 unknown을 반환하고, 값이 0이면 out of stock을 반환하며, 그 외의 경우에는 in stock: 뒤에 수량을 붙여 반환하세요.

제공된 코드는 재고를 쉼표로 구분된 name=quantity 쌍으로 읽은 다음, 품목을 읽고 반환된 값을 출력합니다.

직접 해보기

stock_status <- function(stock, item) {
  # 여기에 코드를 작성하세요
  ""
}

# 제공된 입력/출력 코드: 그대로 두세요
input <- suppressWarnings(readLines(file("stdin")))
stock <- c()
for (pair in strsplit(input[1], ",")[[1]]) {
  kv <- strsplit(pair, "=")[[1]]
  stock[kv[1]] <- as.numeric(kv[2])
}
cat(stock_status(stock, input[2]), sep = "\n")
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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