Menu
Coddy logo textTech

고유한 값

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

R에는 별도의 집합 타입이 없습니다. 집합은 중복된 값이 없는 벡터입니다. unique()는 중복을 제거하고 각 값의 첫 번째 출현을 원래 순서대로 유지합니다.

tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))

출력:

[1] "r"     "stats" "data" 
[1] 3

duplicated()는 벡터에서 이전에 이미 나타난 모든 값에 대해 TRUE를 반환합니다. 첫 번째 출현은 FALSE입니다:

ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])

출력:

[1] FALSE FALSE  TRUE FALSE  TRUE
[1] 7 3

두 함수 모두 정확한 값을 비교하므로 "R"과 "r"은 서로 다릅니다. 대소문자가 중요하지 않아야 할 때는 먼저 텍스트를 정규화하세요:

langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))

출력:

[1] 4
[1] "r"      "python"

unique()는 숫자에도 작동하며, sort(unique(x))는 서로 다른 값을 오름차순으로 나열합니다. sum(duplicated(x))는 반복되는 요소가 몇 개인지 셉니다:

rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))

출력:

[1] 2 4 6
[1] 3
challenge icon

챌린지

쉬움

count_distinct(tags)를 완성하세요. 대소문자를 구분하지 않을 때 서로 다른 태그가 몇 개인지 반환하세요. R과 r은 한 번으로 계산됩니다.

제공된 코드는 태그를 쉼표로 구분된 한 줄로 읽고 반환된 숫자를 출력합니다.

직접 해보기

count_distinct <- function(tags) {
  # 여기에 코드를 작성하세요
  0
}

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

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

논리와 흐름의 모든 레슨

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