Menu
Coddy logo textTech

名前付きベクトル

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

これまで、数値による位置を使用してベクトルの要素にアクセスしてきました。しかし、代わりに意味のある名前でアクセスできたらどうでしょうか?名前付きベクトル(Named vectors)を使用すると、各要素にラベルを割り当てることができ、コードの可読性が向上し、自己文書化が可能になります。

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

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番目と最後の要素には、数値インデックスではなく、名前(文字列として)を使用してアクセスしてください。

チートシート

名前付きベクトルを使用すると、各要素にラベルを割り当てることができ、数値的な位置だけでなく、意味のある名前で要素にアクセスできるようになります。

作成時に名前を指定して、名前付きベクトルを作成します:

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

角括弧内の文字列として名前を使用して、名前で要素にアクセスします:

ages["bob"]  # "bob" という名前の要素を返します

names() 関数を使用して、既存のベクトルに名前を追加します:

scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
scores["math"]  # 85 を返します

自分で試してみよう

# 入力を読み込む
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腕試し

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

基礎のすべてのレッスン