Menu
Coddy logo textTech

Découpage et indexation de vecteurs

Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 67 sur 78.

Vous avez appris comment accéder à des éléments individuels et itérer à travers des vecteurs. Maintenant, explorons comment extraire plusieurs éléments à la fois en utilisant le slicing. Cette technique vous permet de récupérer un sous-ensemble d'un vecteur en une seule opération.

Pour extraire plusieurs éléments, passez un vecteur d'indices à l'intérieur des crochets :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

Résultat :

[1] 10 30 50

Vous pouvez également utiliser l'opérateur deux-points pour sélectionner une plage d'éléments consécutifs :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

Sortie :

[1] 20 30 40

Les indices négatifs sont puissants en R. Ils excluent des éléments au lieu de les sélectionner :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])

Sortie :

[1] 10 30 40 50

Vous pouvez exclure plusieurs éléments en passant un vecteur d'indices négatifs :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

Sortie :

[1] 20 30 40

Rappel : vous ne pouvez pas mélanger des indices positifs et négatifs dans la même sélection. R renverra une erreur si vous essayez numbers[c(1, -2)].

challenge icon

Défi

Facile

Vous recevrez deux lignes d'entrée :

  1. Une liste de nombres séparés par des virgules (par exemple, 100,200,300,400,500,600,700)
  2. Deux indices séparés par une virgule représentant une plage à exclure (par exemple, 2,5)

Effectuez les opérations suivantes :

  1. Créez un vecteur numérique à partir des nombres séparés par des virgules
  2. Affichez les éléments aux positions 1, 3 et 5 en utilisant un vecteur d'indices
  3. Affichez les éléments de la position 2 à la position 4 en utilisant l'opérateur deux-points (colon operator)
  4. Affichez le vecteur en excluant l'élément au premier indice donné (en utilisant l'indexation négative)
  5. Affichez le vecteur en excluant les éléments du premier au deuxième indice (en utilisant l'indexation négative avec une plage)

Par exemple, si les entrées sont :

10,20,30,40,50,60,70
3,5

La sortie devrait être :

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

Explication :

  • Les éléments aux positions 1, 3, 5 sont : 10, 30, 50
  • Les éléments de la position 2 à 4 sont : 20, 30, 40
  • L'exclusion de la position 3 donne : 10, 20, 40, 50, 60, 70
  • L'exclusion des positions 3 à 5 donne : 10, 20, 60, 70

Aide-mémoire

Pour extraire plusieurs éléments d'un vecteur, passez un vecteur d'indices à l'intérieur de crochets :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])  # [1] 10 30 50

Utilisez l'opérateur deux-points pour sélectionner une plage d'éléments consécutifs :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])  # [1] 20 30 40

Les indices négatifs excluent des éléments au lieu de les sélectionner :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])  # [1] 10 30 40 50

Excluez plusieurs éléments en passant un vecteur d'indices négatifs :

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])  # [1] 20 30 40

Important : Vous ne pouvez pas mélanger des indices positifs et négatifs dans la même sélection.

Essayez vous-même

# Lire l'entrée
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Analyser les nombres séparés par des virgules dans un vecteur numérique
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])

# Analyser les deux indices
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: Écrivez votre code ci-dessous
# 1. Imprimer les éléments aux positions 1, 3 et 5 en utilisant un vecteur d'indices

# 2. Imprimer les éléments de la position 2 à la position 4 en utilisant l'opérateur deux-points

# 3. Imprimer le vecteur en excluant l'élément à idx1 (indexation négative)

# 4. Imprimer le vecteur en excluant les éléments de idx1 à idx2 (indexation négative avec plage)
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