Menu
CoddyTech

名前付きベクトル

CoddyのRジャーニー「基礎」セクションの一部。レッスン 62/78。

これまでは、数値の位置を使ってベクトルの要素にアクセスしてきました。しかし、代わりに意味のある名前でアクセスできるとしたらどうでしょうか。名前付きベクトルを使うと、各要素にラベルを割り当てられるため、コードがより読みやすく、自己説明的になります。

作成時に名前を指定することで、名前付きベクトルを作成できます。

ages <- c(alice = 25, bob = 30, charlie = 28)
print(ages)

出力:

  alice     bob charlie 
     25      30      28

名前で要素にアクセスするには、角括弧内に文字列として名前を指定します。

print(ages["bob"])

出力:

bob 
 30

既存のベクトルに names() 関数を使って名前を追加することもできます:

scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
print(scores["math"])

出力:

math 
  85

名前付きベクトルは、科目ごとの生徒の成績や商品名ごとの価格の保存など、自然なラベルを持つデータを扱うときに特に便利です。

challenge icon

チャレンジ

簡単

入力として2行を受け取ります。

  1. 商品名をカンマ区切りにしたリスト(例:laptop,phone,tablet,headphones)
  2. 対応する価格をカンマ区切りにしたリスト(例:999,699,449,199)

次の操作を実行します。

  1. 価格から数値ベクトルを作成する
  2. names()関数を使用して、商品名をベクトルに割り当てる
  3. 名前付きベクトル全体を出力する
  4. 名前を使ってアクセスし、2番目の商品価格を出力する
  5. 名前を使ってアクセスし、最後の商品価格を出力する

たとえば、入力が次のとおりの場合:

apple,banana,orange,grape
2,1,3,4

出力は次のようになります。

apple banana orange  grape 
    2      1      3      4 
banana 
     1 
grape 
    4

注:2番目と最後の要素には、数値位置ではなく、名前を添字(たとえば文字列prices["banana"])として使用してアクセスしてください。名前は最初の入力行から取得されるため、まずそこで正しい名前を確認してください。

自分で試してみよう

# 入力を読み込む
con <- file("stdin", "r")
products_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# カンマ区切りの入力を解析する
product_names <- strsplit(products_input, ",")[[1]]
price_values <- strsplit(prices_input, ",")[[1]]

# TODO: 以下にコードを書いてください
# 1. 価格から数値ベクトルを作成する
# 2. names() を使ってベクトルに製品名を割り当てる
# 3. 名前付きベクトル全体を出力する
# 4. 名前を使ってアクセスし、2番目の製品の価格を出力する
# 5. 名前を使ってアクセスし、最後の製品の価格を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ