Iterare sui nomi
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 10 di 64.
Un ciclo for su names(x) visita ogni chiave, e x[[key]] restituisce il valore di quella chiave:
scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
cat(name, "scored", scores[[name]], "\n")
}Output:
ada scored 91
bo scored 78
cy scored 85 Le voci mantengono l’ordine in cui sono state aggiunte. Esegui un ciclo su sort(names(x)) per ottenere l’ordine alfabetico:
scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
cat(name, scores[[name]], "\n")
}Output:
ada 91
bo 78
cy 85 Scorrere l'input e aggiornare una tabella di ricerca conta quante volte compare ciascun valore. La prima volta che viene vista una parola le viene assegnato 1; dopodiché il valore aumenta di 1:
words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
if (w %in% names(counts)) {
counts[w] <- counts[w] + 1
} else {
counts[w] <- 1
}
}
print(counts[["red"]])
print(names(counts))Output:
[1] 3
[1] "red" "blue" "green"Per creare le righe di output, raccoglile in un vettore all'interno del ciclo e restituiscile o stampale alla fine:
scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")Output:
ada: 91
bo: 78Sfida
FacileCompleta word_counts(words). Restituisci una riga per ogni parola distinta, in ordine alfabetico, nel formato word: count.
Il codice fornito legge le parole su un'unica riga, separate da spazi, e stampa ogni riga restituita.
Provalo tu
word_counts <- function(words) {
# Escribe tu código aquí
character(0)
}
# Código de entrada/salida proporcionado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), sep = "\n")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online