Accéder aux éléments d'une liste
Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 72 sur 78.
Les listes utilisent une syntaxe différente pour accéder aux éléments par rapport aux vecteurs. La différence clé réside entre les crochets simples [ ] et les crochets doubles [[ ]].
Les doubles crochets extraient l'élément réel de la liste :
my_list <- list(42, "hello", TRUE)
print(my_list[[1]])Sortie :
[1] 42Les crochets simples renvoient une sous-liste contenant l'élément, et non l'élément lui-même :
my_list <- list(42, "hello", TRUE)
print(my_list[1])Sortie :
[[1]]
[1] 42Cette distinction est importante lorsque vous souhaitez travailler avec la valeur réelle. Si un élément de liste est un vecteur, les doubles crochets vous permettent d'y accéder directement, puis d'utiliser l'indexation de vecteur :
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])Sortie :
[1] 20Ici, my_list[[1]] récupère le vecteur, et [2] accède à son deuxième élément. Rappelez-vous : utilisez [[ ]] quand vous avez besoin du contenu réel, et [ ] quand vous voulez une liste plus petite.
Défi
FacileVous recevrez deux lignes d'entrée :
- Trois valeurs séparées par des virgules de différents types (par exemple,
100,hello,TRUE) - Une liste de nombres séparés par des virgules représentant un vecteur à stocker comme quatrième élément (par exemple,
5,10,15,20)
Effectuez les opérations suivantes :
- Créeez une liste avec quatre éléments : la valeur numérique, le texte, la valeur logique et le vecteur de nombres
- Utilisez des doubles crochets pour extraire et afficher le deuxième élément (la valeur textuelle)
- Utilisez des crochets simples pour extraire le troisième élément et afficher le résultat (remarquez la différence dans le format de sortie)
- Accédez au vecteur stocké dans le quatrième élément en utilisant des doubles crochets, puis extrayez et affichez sa troisième valeur en utilisant l'indexation de vecteur
- Affichez la somme de tous les nombres du quatrième élément (accédez au vecteur avec des doubles crochets et utilisez
sum())
Par exemple, si les entrées sont :
42,world,FALSE
8,16,24,32,40La sortie devrait être :
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Explication :
my_list[[2]]extrait la valeur textuelle réelle : "world"my_list[3]renvoie une sous-liste contenant FALSE (notez le[[1]]dans la sortie)my_list[[4]][3]accède au vecteur, puis récupère son troisième élément : 24sum(my_list[[4]])calcule 8+16+24+32+40 = 120
Aide-mémoire
Les listes utilisent une syntaxe de crochets différente pour accéder aux éléments :
Les doubles crochets [[ ]] extraient l'élément réel :
my_list <- list(42, "hello", TRUE)
print(my_list[[1]]) # Résultat : [1] 42Les crochets simples [ ] renvoient une sous-liste contenant l'élément :
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # Résultat : [[1]] [1] 42Accéder à des éléments imbriqués : Utilisez des doubles crochets pour extraire un vecteur d'une liste, puis utilisez l'indexation de vecteur :
my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2]) # Résultat : [1] 20Utilisez [[ ]] lorsque vous avez besoin du contenu réel, et [ ] lorsque vous voulez une liste plus petite.
Essayez vous-même
# Lire l'entrée
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1)) # Première ligne : trois valeurs séparées par des virgules
input2 <- suppressWarnings(readLines(con, n = 1)) # Deuxième ligne : nombres séparés par des virgules pour le vecteur
close(con)
# Analyser la première ligne d'entrée en valeurs distinctes
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])
# Analyser la deuxième ligne d'entrée en un vecteur numérique
vector_val <- as.numeric(strsplit(input2, ",")[[1]])
# TODO : Écrivez votre code ci-dessous
# 1. Créer une liste avec quatre éléments : numeric_val, text_val, logical_val et vector_val
# 2. Utiliser des doubles crochets [[ ]] pour extraire et afficher le deuxième élément
# 3. Utiliser des crochets simples [ ] pour extraire le troisième élément et l'afficher
# 4. Accéder au quatrième élément avec des doubles crochets, puis extraire sa troisième valeur
# 5. Afficher la somme de tous les nombres du quatrième élémentCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique11Vecteurs
Créer des vecteurs avec c()Accéder aux éléments d'un vecteurModifier des vecteursOpérations sur les vecteursRécapitulatif - Vecteur de prixRécapitulatif - Vecteur inverséVecteurs nommés14Les listes en R
Créer des listesAccéder aux éléments d'une listeModifier des listesListes nomméesRécapitulatif - Liste de produits3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défaut