Menu
CoddyTech

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 à accéder à des éléments individuels et à parcourir des vecteurs. Explorons maintenant comment extraire plusieurs éléments à la fois à l’aide du découpage. Cette technique vous permet d’extraire un sous-ensemble d’un vecteur en une seule opération.

Pour extraire plusieurs éléments, transmettez un vecteur d’indices entre crochets :

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

Sortie :

[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 dans R. Ils excluent les é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 transmettant un vecteur d’indices négatifs :

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

Sortie :

[1] 20 30 40

Rappelez-vous : vous ne pouvez pas mélanger des indices positifs et négatifs dans la même sélection. R générera 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 ex., 100,200,300,400,500,600,700)
  2. Deux indices séparés par une virgule représentant une plage à exclure (par ex., 2,5)

Le code de départ lit déjà l’entrée et crée le vecteur numérique. Affichez exactement quatre lignes, dans cet ordre :

  1. Afficher les éléments aux positions 1, 3 et 5 à l’aide d’un vecteur d’indices
  2. Afficher les éléments de la position 2 à la position 4 à l’aide de l’opérateur deux-points
  3. Afficher le vecteur en excluant l’élément situé au premier indice donné (à l’aide de l’indexation négative)
  4. Afficher le vecteur en excluant les éléments du premier indice au deuxième indice (à l’aide de 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 doit ê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 et 5 sont : 10, 30, 50
  • Les éléments des positions 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
FORMAT DE SORTIE REQUIS :

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 en 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. Afficher les éléments aux positions 1, 3 et 5 en utilisant un vecteur d'indices

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

# 3. Afficher le vecteur avec l'élément à idx1 exclu (indexation négative)

# 4. Afficher le vecteur avec les éléments de idx1 à idx2 exclus (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

Entraînez-vous par vous-même : Compilateur R en ligne