Menu
Coddy logo textTech

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] 10

Questo schema è utile quando devi applicare operazioni diverse in base al valore di ciascun elemento, cosa che le sole operazioni vettorializzate non possono sempre gestire.

challenge icon

Sfida

Facile

Riceverai due righe di input:

  1. Un elenco di numeri separati da virgole (ad es., 12,5,18,3,25,8,14)
  2. Un valore soglia (ad es., 10)

Usando un ciclo for per scorrere gli elementi del vettore:

  1. Crea un vettore dai numeri separati da virgole
  2. Scorri ogni elemento del vettore
  3. 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
10

L'output dovrebbe essere:

[1] 15
[1] 22
[1] 19
[1] 11

Spiegazione: 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()
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