名前付きベクトルの検索
CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 7/64。
名前付きベクトルは値を名前の下に格納するため、ルックアップテーブルになります。名前がキーで、要素がその値です。値だけを取得するには、名前を [[ ]] に入れます。
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))出力:
[1] 7
[1] "tea" "cake"単一の角括弧は、要素をその名前とともに返します。[[ ]]は値だけを返します。
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)出力:
cake
7
[1] 14名前は変数から取得できます。これは、プログラムが入力から読み取ったキーを検索する方法です。
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])出力:
[1] 4名前のベクトルを使うと、複数のキーを一度に検索でき、重複も含められるため、sum() で注文の合計を1ステップで計算できます。
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))出力:
[1] 15存在しない名前は、2つの形式で異なる動作をします。prices["milk"] は NA を返しますが、prices[["milk"]] は subscript out of bounds というエラーで停止します。
チャレンジ
簡単line_total(item, qty)を完成させてください。この関数では、以下のメニューを定義します。itemの価格にqtyを掛けた値を、小数点以下2桁で整形して返します。teaと3の場合は7.50になります。
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)入力に含まれるすべての項目はメニューにあります。提供されたコードは項目と数量を読み取り、返された値を出力します。
自分で試してみよう
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# ここにコードを書いてください
""
}
# 提供された入出力コード: そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[1], as.numeric(input[2])), sep = "\n")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ