Sortowanie wektorów
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 37 z 64.
sort(x) zwraca wartości x w kolejności rosnącej, a decreasing = TRUE odwraca tę kolejność. Oryginalny wektor nie ulega zmianie:
scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)Wynik:
[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88Tekst jest sortowany alfabetycznie. Dokładna kolejność zależy od ustawień językowych systemu: na Coddy, tak jak na wielu serwerach, wielkie litery są przed małymi, więc "Zed" jest sortowane przed "ada". Użyj tolower(), gdy wielkość liter nie powinna mieć znaczenia:
names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))Wynik:
[1] "Zed" "ada" "cy"
[1] "ada" "cy" "zed"rev(x) odwraca bieżącą kolejność bez sortowania, a head(x, n) zachowuje pierwsze n elementów, co w połączeniu z sort() daje listę najlepszych wyników:
scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))Wynik:
[1] 88 60 95 72
[1] 95 88Posortowany nazwany wektor zachowuje każdą nazwę wraz z jej wartością, więc nazwy pojawiają się w kolejności wartości:
stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])Wynik:
[1] "jam" "oil" "tea"
[1] 3Wyzwanie
ŁatwyUzupełnij top_scores(scores, n). Zwróć n najwyższych wyników, od najwyższego do najniższego, połączonych za pomocą , . Jeśli wyników jest mniej niż n, zwróć je wszystkie.
Dostarczony kod odczytuje wyniki z wiersza, w którym są oddzielone przecinkami, oraz n, a następnie wypisuje zwróconą wartość.
Spróbuj swoich sił
top_scores <- function(scores, n) {
# Wpisz tutaj swój kod
""
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), 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 ocen8Sortowanie i grupowanie
Sortowanie wektorówSortowanie według kluczaGrupowanie za pomocą split()Podsumowania grupPowtórka – tabela wyników3Zbiory 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