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 3Iterando 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 : cherryQuesto 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.
Sfida
FacileRiceverai 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:
- Crea un vettore a partire dall'input separato da virgole
- Scorri il vettore usando
seq_along()per ottenere sia l'indice sia il valore - 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,20L'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)\nQuesta 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