Wyszukiwanie nazwanych elementów wektora
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 7 z 64.
Wektor nazwany przechowuje wartości pod nazwami, dzięki czemu działa jak tabela wyszukiwania: nazwa jest kluczem, a element jego wartością. Umieść nazwę w [[ ]], aby uzyskać samą wartość.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))Wynik:
[1] 7
[1] "tea" "cake"Pojedyncze nawiasy zwracają element wraz z jego nazwą. [[ ]] zwraca tylko wartość:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)Wynik:
cake
7
[1] 14Nazwa może pochodzić ze zmiennej — w ten sposób program wyszukuje klucz, który odczytał z wejścia:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])Wynik:
[1] 4Wektor nazw wyszukuje jednocześnie kilka kluczy, uwzględniając powtórzenia, więc sum() sumuje zamówienie w jednym kroku:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))Wynik:
[1] 15Brakująca nazwa zachowuje się inaczej w obu formach: prices["milk"] zwraca NA, a prices[["milk"]] kończy działanie błędem subscript out of bounds.
Wyzwanie
ŁatwyUzupełnij line_total(item, qty). Funkcja definiuje poniższe menu. Zwróć cenę item pomnożoną przez qty, sformatowaną do dwóch miejsc po przecinku: tea i 3 dają 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)Każda pozycja z danych wejściowych znajduje się w menu. Dostarczony kod odczytuje pozycję i ilość, a następnie wyświetla zwróconą wartość.
Spróbuj swoich sił
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# Wpisz tutaj swój kod
""
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[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 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