R - 配列:強力なデータ構造の入門ガイド

こんにちは、R言語を学ぼうとする皆さん!このエキサイティングな旅であなたの案内役を務めることができてとても嬉しいです。コンピュータサイエンスを10年以上教えてきた者として、配列はプログラミングにおけるスイスアーミーナイフのように、多様で強力であり、マスターするには绝对に必要です。それでは、始めましょう!

R - Arrays

配列とは?

本質的な部分に入る前に、まず基本から始めましょう。あなたが本のコレクションを持っているとします。それらを一積みにしてしまうと、特定の本を見つけるのが難しくなります。それでは、複数の棚とセクションがある本棚を思い浮かべてください。それがRにおける配列の概念です – データを整理して保存する構造化された方法です。

Rにおける配列は、同じタイプのデータを保持する多次元データ構造です。これは、複数の次元にデータを保存できるスーパーチャージされたベクターバージョンです。

例:初めての配列を作成する

それでは、初めての配列を作成してみましょう。array()関数を使ってこれを行います。

my_first_array <- array(1:24, dim = c(4, 3, 2))
print(my_first_array)

このコードを実行すると、以下のような出力が見えます:

, , 1

[,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

, , 2

[,1] [,2] [,3]
[1,]   13   17   21
[2,]   14   18   22
[3,]   15   19   23
[4,]   16   20   24

何が起きたのでしょう?3次元の配列を作成したのです!これを2つの4x3の行列が重なっていると考えます。dim = c(4, 3, 2)の部分は、Rに4行、3列、2つの「層」または行列を作成するように指示しています。

列と行の名前を付ける

本棚をラベルして本を簡単に見つけやすくするように、配列の次元に名前を付けることもできます。これにより、データがより意味があり、扱いやすくなります。

# 名前を付けた次元を持つ配列を作成する
student_scores <- array(
c(85, 90, 78, 92, 88, 76, 95, 87, 82),
dim = c(3, 3),
dimnames = list(
c("Alice", "Bob", "Charlie"),
c("Math", "Science", "English")
)
)

print(student_scores)

出力:

Math Science English
Alice    85      88      95
Bob      90      76      87
Charlie  78      92      82

今では配列が意味のある行と列の名前を持っています。Aliceが数学で85点、英語で95点を取ったことが簡単に理解できます!

配列要素にアクセスする

配列を作成したので、どのようにして特定の情報を取得するのでしょうか?本棚の特定の棚とセクションを見るのと同じです。

# 単一の要素にアクセスする
print(student_scores["Alice", "Math"])  # 出力: 85

# すべての行にアクセスする
print(student_scores["Bob", ])  # 出力: Math 90 Science 76 English 87

# すべての列にアクセスする
print(student_scores[, "Science"])  # 出力: Alice 88 Bob 76 Charlie 92

配列要素を操作する

配列はデータを保存するだけでなく、変更することもできます。スコアを更新してみましょう:

# 単一のスコアを更新する
student_scores["Charlie", "English"] <- 89
print(student_scores["Charlie", "English"])  # 出力: 89

# すべての行を更新する
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ])  # 出力: Math 91 Science 93 English 97

配列要素を跨ぐ計算

配列の最も強力な機能の1つは、その要素を跨ぐ計算を行う能力です。平均を計算してみましょう:

# 各学生の平均スコアを計算する
student_averages <- apply(student_scores, 1, mean)
print(student_averages)

# 各科目の平均スコアを計算する
subject_averages <- apply(student_scores, 2, mean)
print(subject_averages)

apply()関数は配列のSwiss Army knifeです。第2引数(1または2)は、Rに関数(この場合はmean)を行(1)または列(2)に適用するように指示します。

配列メソッド

以下は、Rでよく使われる配列メソッドの表です:

メソッド 説明
array() 配列を作成する array(1:12, dim = c(3, 4))
dim() 配列の次元を取得または設定する dim(my_array)
length() 配列の要素数を取得する length(my_array)
dimnames() 配列の次元名を取得または設定する dimnames(my_array)
apply() 配列のマージンに関数を適用する apply(my_array, 2, sum)
sweep() 配列のサマリーを除去する sweep(my_array, 2, colMeans(my_array))

結論

おめでとうございます!R配列の強力な世界への第一歩を踏み出しました。配列の作成、次元の名前付け、要素へのアクセスと操作、そして要素を跨ぐ計算までをカバーしました。

配列を学ぶことは、図書館を整理するのと同じです。最初は複雑に見えるかもしれませんが、一度慣れるとデータを効率的に保存、アクセス、分析できることに驚くでしょう。

Rの旅を続ける中で、配列は単純なデータ分析から複雑な統計モデルまでどこにでも出てくるでしょう。 therefore、練習を続け、好奇心を持ち、実験を恐れずにください。ハッピーコーディングを、そしてあなたの配列が常に整理されていることを祈っています!

Credits: Image by storyset