Iterare sugli elementi dei vettori
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 63 di 78.
Sebbene le operazioni vettorializzate di R siano potenti, a volte devi elaborare ogni elemento singolarmente con una logica personalizzata. Un ciclo for ti permette di scorrere gli elementi di un vettore uno alla volta.
Il modo più semplice per scorrere un vettore è iterare direttamente sui suoi elementi:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}Output:
[1] "apple"
[1] "banana"
[1] "cherry"A ogni iterazione, la variabile del ciclo fruit assume il valore dell’elemento successivo nel vettore. Questo approccio è chiaro e leggibile quando ti servono solo i valori.
Puoi combinare l'iterazione con la logica condizionale per elaborare selettivamente gli elementi:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}Output:
[1] 8
[1] 10Questo schema è utile quando devi applicare operazioni diverse in base al valore di ciascun elemento, cosa che le sole operazioni vettorializzate non possono sempre gestire.
Sfida
FacileRiceverai due righe di input:
- Un elenco di numeri separati da virgole (ad es.,
12,5,18,3,25,8,14) - Un valore soglia (ad es.,
10)
Usando un ciclo for per scorrere gli elementi del vettore:
- Crea un vettore dai numeri separati da virgole
- Scorri ogni elemento del vettore
- Per ogni elemento che è maggiore o uguale alla soglia, stampa quell'elemento usando
print()
Ad esempio, se gli input sono:
4,15,8,22,6,19,11
10L'output dovrebbe essere:
[1] 15
[1] 22
[1] 19
[1] 11Spiegazione: Il ciclo confronta ogni elemento con la soglia (10). Gli elementi 15, 22, 19 e 11 sono tutti maggiori o uguali a 10, quindi vengono stampati. Gli elementi 4, 8 e 6 vengono ignorati.
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)
# Converti la stringa separata da virgole in un vettore numerico
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# TODO: Scrivi il tuo codice qui sotto
# Usa un ciclo for per scorrere il vettore numbers
# Per ogni elemento >= threshold, stampalo usando print()Questa 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 parametri12Iterare sulle sequenze
Iterare sugli elementi dei vettoriUsare seq_along()Iterare sui caratteri (strsplitFunzioni di manipolazione delle stringheEsercitati da solo: Compilatore R online