Riepiloghi di righe e colonne
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 19 di 64.
rowSums() e rowMeans() restituiscono un risultato per ogni riga; colSums() e colMeans() uno per ogni colonna. Qui ogni riga rappresenta uno studente e ogni colonna una prova:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))Output:
[1] 80.00000 73.33333
[1] 140 165 155Per qualsiasi altro riepilogo, apply(m, 1, f) chiama f su ogni riga e apply(m, 2, f) su ogni colonna:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))Output:
[1] 90 85
[1] 60 75 70Combina un riepilogo con which.max() per trovare quale riga o colonna ottiene il risultato migliore:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
best_test <- which.max(colMeans(scores))
print(best_test)
print(round(rowMeans(scores), 1))Output:
[1] 2
[1] 80.0 73.3apply() accetta anche una funzione che scrivi al momento con function(r). Qui conta i valori maggiori di 5 in ogni riga:
m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))Output:
[1] 1 2Sfida
FacileCompleta class_report(scores). Ogni riga di scores corrisponde a uno studente e ogni colonna a un test. Restituisci una riga per studente, Student 1: 81.7, con la media dello studente arrotondata a una cifra decimale. Aggiungi un'ultima riga Best test: seguita dal numero della colonna con la media più alta.
Il codice fornito legge una matrice da una riga: le righe sono separate da ; e i valori di una riga da ,, quindi 1,2;3,4 è una matrice con le righe 1 2 e 3 4. Il codice stampa ogni riga restituita.
Provalo tu
class_report <- function(scores) {
# Scrivi qui il tuo codice
character(0)
}
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
rows <- strsplit(line, ";")[[1]]
matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(class_report(parse_matrix(input[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