Modifier des listes
Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 73 sur 78.
Maintenant que vous savez comment créer des listes et accéder à leurs éléments, apprenons comment les modifier. Vous pouvez modifier des éléments existants, en ajouter de nouveaux ou supprimer entièrement des éléments.
Pour modifier un élément existant, utilisez des doubles crochets avec l'affectation :
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)Sortie :
[[1]]
[1] 10
[[2]]
[1] "world"
[[3]]
[1] TRUEPour ajouter un nouvel élément, il suffit de l'assigner à un index qui n'existe pas encore :
my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)Sortie :
[[1]]
[1] 10
[[2]]
[1] "hello"
[[3]]
[1] FALSEPour supprimer un élément, affectez-lui NULL :
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)Sortie :
[[1]]
[1] 10
[[2]]
[1] TRUERemarquez qu'après avoir supprimé le deuxième élément, les éléments restants se décalent pour combler le vide. L'élément qui était à la position 3 est maintenant à la position 2.
Défi
FacileVous recevrez trois lignes d'entrée :
- Trois valeurs séparées par des virgules pour initialiser une liste (par exemple,
50,hello,TRUE) - Un index et une nouvelle valeur séparés par une virgule pour modification (par exemple,
2,goodbye) - Un index de l'élément à supprimer (par exemple,
3)
Effectuez les opérations suivantes :
- Créez une liste avec les trois valeurs initiales (convertissez-les dans les types appropriés : numérique, caractère, logique)
- Affichez la liste originale
- Modifiez l'élément à l'index spécifié avec la nouvelle valeur (conservez-la sous forme de chaîne de caractères)
- Affichez la liste après modification
- Ajoutez un nouvel et quatrième élément à la liste avec la valeur
999 - Affichez la liste après l'ajout du nouvel élément
- Supprimez l'élément à l'index spécifié (à partir de la troisième entrée)
- Affichez la liste finale
Par exemple, si les entrées sont :
100,world,FALSE
1,updated
2La sortie devrait être :
[[1]]
[1] 100
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[4]]
[1] 999
[[1]]
[1] "updated"
[[2]]
[1] FALSE
[[3]]
[1] 999Explication :
- Liste originale : 100, "world", FALSE
- Après modification de l'index 1 : "updated", "world", FALSE
- Après l'ajout du quatrième élément : "updated", "world", FALSE, 999
- Après la suppression de l'index 2 : "updated", FALSE, 999 (les éléments restants sont décalés)
N'oubliez pas d'utiliser les doubles crochets [[ ]] pour les modifications et d'assigner NULL pour supprimer des éléments.
Aide-mémoire
Pour modifier un élément existant dans une liste, utilisez des doubles crochets avec l'affectation :
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"Pour ajouter un nouvel élément à une liste, affectez une valeur à un index qui n'existe pas encore :
my_list <- list(10, "hello")
my_list[[3]] <- FALSEPour supprimer un élément d'une liste, affectez-lui NULL :
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULLLorsqu'un élément est supprimé, les éléments restants se décalent pour combler le vide. L'élément qui était à la position 3 passe à la position 2.
Essayez vous-même
# Lire l'entrée
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Trois valeurs séparées par des virgules
modify_input <- suppressWarnings(readLines(con, n = 1)) # Index et nouvelle valeur
remove_index <- suppressWarnings(readLines(con, n = 1)) # Index à supprimer
close(con)
# Analyser les valeurs initiales
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])
# Analyser l'entrée de modification
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]
# Analyser l'index de suppression
rem_index <- as.numeric(remove_index)
# TODO: Écrivez votre code ci-dessous
# 1. Créer une liste avec les trois valeurs initiales (val1, val2, val3)
# 2. Afficher la liste originale
# 3. Modifier l'élément à mod_index avec mod_value
# 4. Afficher la liste après modification
# 5. Ajouter un nouvel quatrième élément avec la valeur 999
# 6. Afficher la liste après l'ajout
# 7. Supprimer l'élément à rem_index (utiliser NULL)
# 8. Afficher la liste finaleCette 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