何を買うべきか
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 78/78。
チャレンジ
簡単budget(数値)と prices(アイテムの価格が格納された名前付きベクトル)の2つの引数を受け取る、what_to_buy という名前の関数を作成してください。この関数は、価格が予算以下のすべてのアイテム名を含む文字ベクトルを返す必要があります。
購入可能なアイテムがない場合は、character(0) を使用して空の文字ベクトルを返してください。
以下の入力が与えられます:
- 予算額(数値)
- カンマ区切りのアイテム名のリスト(例:
apple,banana,steak,bread) - 対応する価格のカンマ区切りリスト(例:
2,1,15,3)
入力をパースして価格の名前付きベクトルを作成し、関数を呼び出して結果を表示してください。返された文字ベクトルを表示するには print() を使用してください。
例えば、入力が以下の場合:
5
apple,banana,steak,bread
2,1,15,3出力は以下のようになります:
[1] "apple" "banana" "bread"入力が以下の場合:
10
laptop,phone,tablet
999,599,399出力は以下のようになります:
character(0)ヒント:
- カンマ区切りの文字列をベクトルに分割するには
strsplit(input, ",")[[1]]を使用します - 価格の文字列を数値に変換するには
as.numeric()を使用します - 名前付きベクトルを作成するには
names(prices) <- item_namesを使用します - 予算内のアイテム名を抽出するには、
names()と論理インデックスを使用します
自分で試してみよう
# 入力を読み込む
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# 入力を解析する
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# 価格の名前付きベクトルを作成する
prices <- price_values
names(prices) <- item_names
# TODO: 以下に what_to_buy 関数を記述してください
# この関数は引数として budget と prices を受け取る必要があります
# そして、購入可能なアイテム名の文字ベクトルを返す必要があります
# 関数を呼び出して結果を出力する
result <- what_to_buy(budget, prices)
print(result)