Menu
Coddy logo textTech

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] 14

Nazwa 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] 4

Wektor 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] 15

Brakują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.

challenge icon

Wyzwanie

Łatwy

Uzupeł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")
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator R online