Valeurs uniques
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 12 sur 64.
R n’a pas de type ensemble distinct : un ensemble est un vecteur sans valeurs répétées. unique() supprime les répétitions et conserve la première occurrence de chaque valeur, dans l’ordre d’origine.
tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))Sortie :
[1] "r" "stats" "data"
[1] 3duplicated() renvoie TRUE pour chaque valeur qui est déjà apparue plus tôt dans le vecteur. La première occurrence est FALSE :
ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])Sortie :
[1] FALSE FALSE TRUE FALSE TRUE
[1] 7 3Les deux fonctions comparent des valeurs exactes, donc "R" et "r" sont différentes. Normalisez d’abord le texte lorsque la casse ne doit pas avoir d’importance :
langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))Résultat :
[1] 4
[1] "r" "python"unique() fonctionne aussi sur les nombres, et sort(unique(x)) liste les valeurs distinctes dans l’ordre croissant. sum(duplicated(x)) compte combien d’éléments sont des répétitions :
rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))Sortie :
[1] 2 4 6
[1] 3Défi
FacileComplétez count_distinct(tags). Retournez le nombre de balises différentes lorsque la casse est ignorée : R et r ne comptent qu’une seule fois.
Le code fourni lit les balises sous forme de ligne séparée par des virgules et affiche le nombre retourné.
Essayez vous-même
count_distinct <- function(tags) {
# Écrivez votre code ici
0
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes en profondeur
Sous-chaînes avec substr()Mise en forme avec sprintf()Scinder et joindreRechercher dans les chaînesRemplacer du texteRécapitulatif - Créateur de nom d'utilisateur4Matrices
Créer des matricesIndexer des matricesRécapitulatifs des lignes et des colonnesArithmétique matricielleRécapitulatif - Plan de salle7La famille Apply
lapply et sapplyMap et mapplyFilter et FindReduceRécapitulatif - Pipeline de données10Structures de contrôle avancées
La fonction switch()ifelse() vectorisérepeat et breakFonctions récursivesRécapitulatif – Classificateur de notes2Recherches par clé-valeur
Recherches dans des vecteurs nommésVérifier les clésAjouter et supprimer des clésParcourir les nomsRécapitulatif - Bureau des stocks5Projet - Carnet de notes
Ajouter des élèvesEnregistrer les notes3Ensembles et comptage
Valeurs uniquesOpérations sur les ensemblesTests d’appartenanceCompter avec table()Récapitulatif - Invités à l’événement6Les fonctions comme valeurs
Fonctions anonymesPasser des fonctionsRetourner des fonctionsFermetures avec étatRécapitulatif - Règles de remise9Data Frames
Créer des Data FramesColonnes et lignesFiltrer les lignesAjouter et trierRécapitulatif - Rapport des ventes12Projet - Suivi des dépenses
Enregistrer les dépensesDépenses totalesEntraînez-vous par vous-même : Compilateur R en ligne