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 50Vous 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 40Les 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 50Vous 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 40Rappelez-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)].
Défi
FacileVous recevrez deux lignes d’entrée :
- Une liste de nombres séparés par des virgules (par ex.,
100,200,300,400,500,600,700) - 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 :
- Afficher les éléments aux positions 1, 3 et 5 à l’aide d’un vecteur d’indices
- Afficher les éléments de la position 2 à la position 4 à l’aide de l’opérateur deux-points
- Afficher le vecteur en excluant l’élément situé au premier indice donné (à l’aide de l’indexation négative)
- 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,5La sortie doit être :
[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70Explication :
- 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
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)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
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 FizzBuzz13Vecteurs avancés
Découpage et indexation de vecteursIndexation logiqueArithmétique des vecteurs et recyclageL'opérateur %in%2Variables 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 dynamique3Opé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éfautEntraînez-vous par vous-même : Compilateur R en ligne