Menu
Coddy logo textTech

Utilisation de seq_along()

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

Parfois, vous avez besoin à la fois de la valeur de l'élément et de sa position dans le vecteur. Bien que l'itération directe sur les éléments soit propre, elle ne vous donne pas accès à l'index. La fonction seq_along() résout ce problème en générant une séquence d'indices pour n'importe quel vecteur.

La fonction seq_along() retourne une séquence de 1 à la longueur du vecteur :

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))

Sortie :

[1] 1 2 3

En bouclant sur ces indices, vous pouvez accéder à la fois à la position et à la valeur :

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}

Sortie :

1 : apple 
2 : banana 
3 : cherry

Cette approche est particulièrement utile lorsque vous devez modifier des éléments à des positions spécifiques ou comparer des éléments avec leurs voisins. L'utilisation de seq_along() est plus sûre que 1:length(vec) car elle gère correctement les vecteurs vides, en renvoyant une séquence vide au lieu de 1:0.

challenge icon

Défi

Facile

Vous recevrez une seule ligne d'entrée contenant des nombres séparés par des virgules (par exemple, 10,20,30,40,50).

En utilisant seq_along() pour itérer sur le vecteur avec des indices :

  1. Créez un vecteur à partir de l'entrée séparée par des virgules
  2. Parcourez le vecteur en utilisant seq_along() pour obtenir à la fois l'indice et la valeur
  3. Pour chaque élément, affichez l'indice, la valeur et la somme cumulative jusqu'à ce point (somme de tous les éléments de la position 1 à la position actuelle)

Utilisez cat() avec le format : Position X: VALUE (Running total: TOTAL) suivi d'un saut de ligne.

Par exemple, si l'entrée est :

5,10,15,20

La sortie devrait être :

Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)

Explication : À la position 1, la valeur est 5 et le total cumulé est 5. À la position 2, la valeur est 10 et le total cumulé est 5+10=15. À la position 3, la valeur est 15 et le total cumulé est 5+10+15=30, et ainsi de suite.

Conseil : Utilisez sum(vector[1:i]) pour calculer la somme cumulative jusqu'à la position i.

Aide-mémoire

La fonction seq_along() génère une séquence d'indices allant de 1 à la longueur d'un vecteur :

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# Résultat : [1] 1 2 3

Utilisez seq_along() dans une boucle pour accéder à la fois à l'indice et à la valeur :

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}
# Résultat :
# 1 : apple 
# 2 : banana 
# 3 : cherry

L'utilisation de seq_along() est plus sûre que 1:length(vec) car elle gère correctement les vecteurs vides, en renvoyant une séquence vide au lieu de 1:0.

Essayez vous-même

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

# Convertir la chaîne séparée par des virgules en un vecteur numérique
numbers <- as.numeric(strsplit(input_line, ",")[[1]])

# TODO: Écrivez votre code ci-dessous
# Utilisez seq_along() pour parcourir le vecteur
# Pour chaque position, affichez l'index, la valeur et le total cumulé
# Utilisez cat() avec le format : Position X: VALUE (Running total: TOTAL)\n
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