Menu
Coddy logo textTech

Arithmétique des vecteurs et recyclage

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

Lorsque vous effectuez des opérations arithmétiques entre deux vecteurs de la même longueur, R applique l'opération élément par élément :

a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)

Sortie :

[1] 11 22 33

Mais que se passe-t-il lorsque les vecteurs ont des longueurs différentes ? R utilise un comportement appelé le recyclage. Le vecteur le plus court est répété pour correspondre à la longueur du plus long :

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Sortie :

[1]  10 200  30 400  50 600

Ici, multiplier a été recyclé pour devenir c(10, 100, 10, 100, 10, 100) avant la multiplication. C'est particulièrement utile lors d'une opération avec une seule valeur :

prices <- c(10, 20, 30)
print(prices * 1.1)

Sortie :

[1] 11 22 33

La valeur unique 1.1 est recyclée pour correspondre à la longueur de prices. Soyez prudent lorsque la longueur du vecteur le plus long n'est pas un multiple de celle du plus court, car R effectuera tout de même l'opération mais pourra générer un avertissement concernant un recyclage partiel.

challenge icon

Défi

Facile

Vous recevrez deux lignes d'entrée :

  1. Une liste de nombres séparés par des virgules représentant des valeurs de base (par exemple, 10,20,30,40,50,60)
  2. Une liste de multiplicateurs séparés par des virgules (par exemple, 2,5)

En utilisant l'arithmétique vectorielle et le recyclage :

  1. Créez un vecteur numérique à partir des valeurs de base
  2. Créez un vecteur numérique à partir des multiplicateurs
  3. Multipliez les valeurs de base par les multiplicateurs (R recyclera le vecteur le plus court)
  4. Affichez le résultat de la multiplication
  5. Ajoutez 100 à chaque élément des valeurs de base originales (recyclage d'une valeur unique)
  6. Affichez le résultat de l'addition
  7. Soustrayez le vecteur des multiplicateurs du vecteur des valeurs de base
  8. Affichez le résultat de la soustraction

Par exemple, si les entrées sont :

5,10,15,20,25,30
3,7

La sortie devrait être :

[1]  15  70  45 140  75 210
[1] 105 110 115 120 125 130
[1]  2  3 12 13 22 23

Explication :

  • Multiplication : Les multiplicateurs c(3, 7) sont recyclés en c(3, 7, 3, 7, 3, 7), ce qui donne 5*3, 10*7, 15*3, 20*7, 25*3, 30*7
  • Addition : La valeur unique 100 est recyclée pour être ajoutée à chaque élément
  • Soustraction : Les multiplicateurs sont à nouveau recyclés, ce qui donne 5-3, 10-7, 15-3, 20-7, 25-3, 30-7

Aide-mémoire

Lors de l'exécution d'opérations arithmétiques entre des vecteurs de longueurs différentes, R utilise le recyclage - le vecteur le plus court est répété pour correspondre à la longueur du plus long :

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Sortie :

[1]  10 200  30 400  50 600

Le vecteur multiplier est recyclé en c(10, 100, 10, 100, 10, 100) avant la multiplication.

Le recyclage d'une valeur unique est particulièrement utile :

prices <- c(10, 20, 30)
print(prices * 1.1)

Sortie :

[1] 11 22 33

La valeur 1.1 est recyclée pour correspondre à la longueur de prices.

Remarque : R peut générer un avertissement lorsque la longueur du vecteur le plus long n'est pas un multiple de celle du plus court.

Essayez vous-même

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

# Analyser les valeurs séparées par des virgules en vecteurs numériques
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])

# TODO: Écrivez votre code ci-dessous
# 1. Multiplier base_values par multipliers (le recyclage se fera automatiquement)
# 2. Imprimer le résultat de la multiplication
# 3. Ajouter 100 à chaque élément de base_values
# 4. Imprimer le résultat de l'addition
# 5. Soustraire multipliers de base_values
# 6. Imprimer le résultat de la soustraction
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