Menu
Coddy logo textTech

Valori univoci

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 12 di 64.

R non ha un tipo set separato: un set è un vettore senza valori ripetuti. unique() rimuove i duplicati e mantiene la prima occorrenza di ogni valore, nell’ordine originale.

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

Output:

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

duplicated() restituisce TRUE per ogni valore che era già comparso in precedenza nel vettore. La prima occorrenza è FALSE:

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

Output:

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

Entrambe le funzioni confrontano valori esatti, quindi "R" e "r" sono diversi. Normalizza prima il testo quando la distinzione tra maiuscole e minuscole non deve contare:

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

Output:

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

Anche unique() funziona con i numeri, e sort(unique(x)) elenca i valori distinti in ordine crescente. sum(duplicated(x)) conta quanti elementi sono ripetuti:

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

Output:

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

Sfida

Facile

Completa count_distinct(tags). Restituisci il numero di tag distinti ignorando le maiuscole e le minuscole: R e r vengono conteggiati una sola volta.

Il codice fornito legge i tag da una riga separata da virgole e stampa il numero restituito.

Provalo tu

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

# Código de entrada/salida proporcionado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online