Menu
Coddy logo textTech

Valores Únicos

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 12 de 64.

R não tem um tipo separado para conjuntos: um conjunto é um vetor sem valores repetidos. unique() remove as repetições e mantém a primeira ocorrência de cada valor, na ordem original.

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

Saída:

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

duplicated() retorna TRUE para cada valor que já apareceu anteriormente no vetor. A primeira ocorrência é FALSE:

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

Saída:

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

Ambas as funções comparam valores exatos, portanto "R" e "r" são diferentes. Normalize o texto primeiro quando a diferença entre maiúsculas e minúsculas não deve importar:

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

Saída:

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

unique() também funciona com números, e sort(unique(x)) lista os valores distintos em ordem crescente. sum(duplicated(x)) conta quantos elementos são repetidos:

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

Saída:

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

Desafio

Fácil

Complete count_distinct(tags). Retorne quantas tags diferentes existem quando a distinção entre maiúsculas e minúsculas é ignorada: R e r contam uma vez.

O código fornecido lê as tags como uma linha separada por vírgulas e imprime o número retornado.

Experimente você mesmo

count_distinct <- function(tags) {
  # Escreva seu código aqui
  0
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online