Iterowanie po nazwach
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 10 z 64.
Pętla for przechodząca po names(x) odwiedza każdy klucz, a x[[key]] zwraca wartość dla tego klucza:
scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
cat(name, "scored", scores[[name]], "\n")
}Wynik:
ada scored 91
bo scored 78
cy scored 85 Wpisy zachowują kolejność, w jakiej zostały dodane. Użyj pętli po sort(names(x)), aby uzyskać kolejność alfabetyczną:
scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
cat(name, scores[[name]], "\n")
}Wynik:
ada 91
bo 78
cy 85 Przechodzenie po danych wejściowych w pętli i aktualizowanie tabeli wyszukiwania pozwala policzyć, jak często pojawia się każda wartość. Za pierwszym razem, gdy słowo zostanie napotkane, przypisywana jest mu wartość 1, a potem zwiększa się ona o 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))Wynik:
[1] 3
[1] "red" "blue" "green"Aby utworzyć wiersze wyników, zbierz je w wektorze wewnątrz pętli, a na końcu zwróć je lub wyświetl:
scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")Wynik:
ada: 91
bo: 78Wyzwanie
ŁatwyUzupełnij word_counts(words). Zwróć jeden wiersz dla każdego unikalnego słowa, w kolejności alfabetycznej, w formacie word: count.
Dostarczony kod odczytuje słowa jako jeden wiersz rozdzielony spacjami i wypisuje każdy zwrócony wiersz.
Spróbuj swoich sił
word_counts <- function(words) {
# Wpisz tutaj swój kod
character(0)
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[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