Podsumowania wierszy i kolumn
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 19 z 64.
Funkcje rowSums() i rowMeans() zwracają po jednym wyniku dla każdego wiersza; colSums() i colMeans() — po jednym dla każdej kolumny. Tutaj każdy wiersz odpowiada uczniowi, a każda kolumna — testowi:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))Wynik:
[1] 80.00000 73.33333
[1] 140 165 155W przypadku każdego innego podsumowania apply(m, 1, f) wywołuje funkcję f dla każdego wiersza, a apply(m, 2, f) dla każdej kolumny:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))Wynik:
[1] 90 85
[1] 60 75 70Połącz podsumowanie z which.max(), aby znaleźć najlepszy wiersz lub kolumnę:
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))Wynik:
[1] 2
[1] 80.0 73.3apply() akceptuje również funkcję, którą napiszesz na bieżąco za pomocą function(r). W tym przypadku zlicza wartości większe niż 5 w każdym wierszu:
m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))Wynik:
[1] 1 2Wyzwanie
ŁatwyUzupełnij class_report(scores). Każdy wiersz scores to jeden uczeń, a każda kolumna to jeden test. Zwróć jeden wiersz na ucznia, Student 1: 81.7, ze średnią ucznia zaokrągloną do jednego miejsca po przecinku. Dodaj ostatni wiersz Best test: , po którym podaj numer kolumny z najwyższą średnią.
Dostarczony kod odczytuje macierz z jednego wiersza: wiersze są oddzielone przez ;, a wartości w wierszu przez ,, więc 1,2;3,4 to macierz z wierszami 1 2 i 3 4. Kod wyświetla każdy zwrócony wiersz.
Spróbuj swoich sił
class_report <- function(scores) {
# Wpisz tutaj swój kod
character(0)
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Łańcuchy znaków w szczegółach
Podciągi za pomocą substr()Formatowanie za pomocą sprintf()Dzielenie i łączenieWyszukiwanie w łańcuchach znakówZastępowanie tekstuPowtórka – kreator nazwy użytkownika4Macierze
Tworzenie macierzyIndeksowanie macierzyPodsumowania wierszy i kolumnDziałania na macierzachPowtórka – plan miejsc10Zaawansowane sterowanie przepływem
Funkcja switch()Wektorowe ifelse()repeat i breakFunkcje rekurencyjnePodsumowanie — klasyfikator ocen2Wyszukiwanie wartości po kluczach
Wyszukiwanie nazwanych elementów wektoraSprawdzanie kluczyDodawanie i usuwanie kluczyIterowanie po nazwachPowtórzenie — giełda5Projekt — dziennik ocen
Dodawanie uczniówZapisywanie ocen3Zbiory i zliczanie
Unikalne wartościOperacje na zbiorachTesty przynależnościZliczanie za pomocą table()Podsumowanie — goście wydarzenia6Funkcje jako wartości
Funkcje anonimowePrzekazywanie funkcjiZwracanie funkcjiDomknięcia ze stanemPowtórka — reguły rabatowe9Ramki danych
Tworzenie ramek danychKolumny i wierszeFiltrowanie wierszyDodawanie i sortowaniePodsumowanie – raport sprzedaży12Projekt – śledzenie wydatków
Rejestrowanie wydatkówŁączne wydatkiPoćwicz samodzielnie: Kompilator R online