Menu
Coddy logo textTech

Usare seq_along()

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

A volte ti servono sia il valore dell'elemento sia la sua posizione nel vettore. Anche se iterare direttamente sugli elementi è semplice, non ti dà accesso all'indice. La funzione seq_along() risolve questo problema generando una sequenza di indici per qualsiasi vettore.

La funzione seq_along() restituisce una sequenza da 1 alla lunghezza del vettore:

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))

Output:

[1] 1 2 3

Iterando su questi indici, puoi accedere sia alla posizione sia al valore:

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}

Output:

1 : apple 
2 : banana 
3 : cherry

Questo approccio è particolarmente utile quando devi modificare elementi in posizioni specifiche o confrontare gli elementi con quelli vicini. Usare seq_along() è più sicuro che usare 1:length(vec), perché gestisce correttamente i vettori vuoti, restituendo una sequenza vuota invece di 1:0.

challenge icon

Sfida

Facile

Riceverai una singola riga di input contenente numeri separati da virgole (ad es., 10,20,30,40,50).

Usa seq_along() per scorrere il vettore con gli indici:

  1. Crea un vettore a partire dall'input separato da virgole
  2. Scorri il vettore usando seq_along() per ottenere sia l'indice sia il valore
  3. Per ogni elemento, stampa l'indice, il valore e la somma cumulativa fino a quel punto (la somma di tutti gli elementi dalla posizione 1 alla posizione corrente)

Usa cat() con il formato: Position X: VALUE (Running total: TOTAL) seguito da una nuova riga.

Ad esempio, se l'input è:

5,10,15,20

L'output dovrebbe essere:

Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)

Spiegazione: alla posizione 1, il valore è 5 e il totale progressivo è 5. Alla posizione 2, il valore è 10 e il totale progressivo è 5+10=15. Alla posizione 3, il valore è 15 e il totale progressivo è 5+10+15=30, e così via.

Suggerimento: usa sum(vector[1:i]) per calcolare la somma cumulativa fino alla posizione i.

Provalo tu

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

# Converti la stringa separata da virgole in un vettore numerico
numbers <- as.numeric(strsplit(input_line, ",")[[1]])

# TODO: Scrivi il tuo codice qui sotto
# Usa seq_along() per scorrere il vettore
# Per ogni posizione, stampa l'indice, il valore e il totale progressivo
# Usa cat() con il formato: Position X: VALUE (Running total: TOTAL)\n
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