Menu
Coddy logo textTech

Valores únicos

Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 12 de 64.

R no tiene un tipo separado para conjuntos: un conjunto es un vector sin valores repetidos. unique() elimina las repeticiones y conserva la primera aparición de cada valor, en el orden original.

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

Salida:

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

duplicated() devuelve TRUE para cada valor que ya apareció antes en el vector. La primera aparición es FALSE:

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

Salida:

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

Ambas funciones comparan valores exactos, por lo que "R" y "r" son diferentes. Normaliza el texto primero cuando las mayúsculas y minúsculas no deban importar:

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

Salida:

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

unique() también funciona con números, y sort(unique(x)) muestra los valores distintos en orden creciente. sum(duplicated(x)) cuenta cuántos elementos están repetidos:

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

Salida:

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

Desafío

Fácil

Completa count_distinct(tags). Devuelve cuántas etiquetas diferentes hay ignorando las mayúsculas y minúsculas: R y r cuentan una vez.

El código proporcionado lee las etiquetas como una línea separada por comas e imprime el número devuelto.

Pruébalo tú mismo

count_distinct <- function(tags) {
  # Escribe tu código aquí
  0
}

# Código de entrada/salida suministrado: déjalo como está
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de R online