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 33Ma 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 600Qui, 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 33Il 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.
Sfida
FacileRiceverai due righe di input:
- Un elenco di numeri separati da virgole che rappresentano i valori di base (ad es.,
10,20,30,40,50,60) - Un elenco di moltiplicatori separati da virgole (ad es.,
2,5)
Usando l'aritmetica vettoriale e il riciclo:
- Crea un vettore numerico dai valori di base
- Crea un vettore numerico dai moltiplicatori
- Moltiplica i valori di base per i moltiplicatori (R riciclerà il vettore più corto)
- Stampa il risultato della moltiplicazione
- Aggiungi
100a ciascun elemento dei valori di base originali (riciclo di un singolo valore) - Stampa il risultato dell'addizione
- Sottrai il vettore dei moltiplicatori dal vettore dei valori di base
- Stampa il risultato della sottrazione
Ad esempio, se gli input sono:
5,10,15,20,25,30
3,7L'output dovrebbe essere:
[1] 15 70 45 140 75 210
[1] 105 110 115 120 125 130
[1] 2 3 12 13 22 23Spiegazione:
- Moltiplicazione: i moltiplicatori
c(3, 7)vengono riciclati inc(3, 7, 3, 7, 3, 7), ottenendo5*3, 10*7, 15*3, 20*7, 25*3, 30*7 - Addizione: il singolo valore
100viene 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 sottrazioneQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online