Menu
Coddy logo textTech

Aritmetica dei vettori e riciclo

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 69 di 78.

Quando esegui operazioni aritmetiche tra due vettori della stessa lunghezza, R applica l’operazione elemento per elemento:

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

Output:

[1] 11 22 33

Ma cosa succede quando i vettori hanno lunghezze diverse? R usa un comportamento chiamato riciclo. Il vettore più corto viene ripetuto per corrispondere alla lunghezza di quello più lungo:

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

Output:

[1]  10 200  30 400  50 600

Qui, multiplier è stato riciclato e trasformato in c(10, 100, 10, 100, 10, 100) prima della moltiplicazione. Questo è particolarmente utile quando si opera con un singolo valore:

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

Output:

[1] 11 22 33

Il singolo valore 1.1 viene riutilizzato per corrispondere alla lunghezza di prices. Fai attenzione quando la lunghezza del vettore più lungo non è un multiplo di quella del vettore più corto, poiché R eseguirà comunque l’operazione, ma potrebbe produrre un avviso relativo al riutilizzo parziale.

challenge icon

Sfida

Facile

Riceverai due righe di input:

  1. Un elenco di numeri separati da virgole che rappresentano i valori di base (ad es., 10,20,30,40,50,60)
  2. Un elenco di moltiplicatori separati da virgole (ad es., 2,5)

Usando l'aritmetica vettoriale e il riciclo:

  1. Crea un vettore numerico dai valori di base
  2. Crea un vettore numerico dai moltiplicatori
  3. Moltiplica i valori di base per i moltiplicatori (R riciclerà il vettore più corto)
  4. Stampa il risultato della moltiplicazione
  5. Aggiungi 100 a ciascun elemento dei valori di base originali (riciclo di un singolo valore)
  6. Stampa il risultato dell'addizione
  7. Sottrai il vettore dei moltiplicatori dal vettore dei valori di base
  8. Stampa il risultato della sottrazione

Ad esempio, se gli input sono:

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

L'output dovrebbe essere:

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

Spiegazione:

  • Moltiplicazione: i moltiplicatori c(3, 7) vengono riciclati in c(3, 7, 3, 7, 3, 7), ottenendo 5*3, 10*7, 15*3, 20*7, 25*3, 30*7
  • Addizione: il singolo valore 100 viene riciclato per essere sommato a ciascun elemento
  • Sottrazione: i moltiplicatori vengono riciclati nuovamente, ottenendo 5-3, 10-7, 15-3, 20-7, 25-3, 30-7

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Converti i valori separati da virgole in vettori numerici
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])

# TODO: Scrivi il tuo codice qui sotto
# 1. Moltiplica base_values per multipliers (il riciclo avverrà automaticamente)
# 2. Stampa il risultato della moltiplicazione
# 3. Aggiungi 100 a ciascun elemento di base_values
# 4. Stampa il risultato dell'addizione
# 5. Sottrai multipliers da base_values
# 6. Stampa il risultato della sottrazione
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore R online