Menu
Coddy logo textTech

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] TRUE

Pour 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] FALSE

Pour 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] TRUE

Remarquez 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.

challenge icon

Défi

Facile

Vous recevrez trois lignes d'entrée :

  1. Trois valeurs séparées par des virgules pour initialiser une liste (par exemple, 50,hello,TRUE)
  2. Un index et une nouvelle valeur séparés par une virgule pour modification (par exemple, 2,goodbye)
  3. Un index de l'élément à supprimer (par exemple, 3)

Effectuez les opérations suivantes :

  1. Créez une liste avec les trois valeurs initiales (convertissez-les dans les types appropriés : numérique, caractère, logique)
  2. Affichez la liste originale
  3. Modifiez l'élément à l'index spécifié avec la nouvelle valeur (conservez-la sous forme de chaîne de caractères)
  4. Affichez la liste après modification
  5. Ajoutez un nouvel et quatrième élément à la liste avec la valeur 999
  6. Affichez la liste après l'ajout du nouvel élément
  7. Supprimez l'élément à l'index spécifié (à partir de la troisième entrée)
  8. Affichez la liste finale

Par exemple, si les entrées sont :

100,world,FALSE
1,updated
2

La 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] 999

Explication :

  • 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]] <- FALSE

Pour supprimer un élément d'une liste, affectez-lui NULL :

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL

Lorsqu'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 finale
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux