0Pricing
R Academy · レッスン

matrix()による行列の作成

data、nrow、ncol、byrowを指定して行列を作成します。

「matrix()による行列の作成」はCoddyKit上の無料R Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。

R の行列とは

R の行列は、すべての要素が同じ型でなければならない 2 次元のデータ構造です。行と列で構成された表と考えることができます。行列は、線形代数、画像処理、統計計算に不可欠です。

# A simple 2x3 matrix
m <- matrix(1:6, nrow = 2, ncol = 3)
cat('A 2x3 matrix:
')
print(m)
cat('Dimensions:', dim(m), '
')  # rows cols

matrix(data, nrow, ncol)

matrix() 関数はデータのベクトルを受け取り、行と列に配置します。デフォルトでは、R は列ごと(列優先順)に行列を埋めます。

# Filled column by column (default)
m_col <- matrix(1:12, nrow = 3, ncol = 4)
cat('Column-filled 3x4 matrix:
')
print(m_col)
cat('Note: 1,2,3 fill the first COLUMN, not the first row
')

行方向に埋める byrow = TRUE

byrow = TRUE を設定すると、行列が行ごとに埋められます。スプレッドシートのように行単位でデータを考える場合、こちらのほうが直感的なことがよくあります。

# Filled row by row
m_row <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Row-filled 3x4 matrix:
')
print(m_row)
cat('Note: 1,2,3,4 fill the first ROW
')

# Verify byrow
m_check <- matrix(c(1,2,3,4,5,6), nrow = 2, byrow = TRUE)
print(m_check)

データベクトルから行列を作成する

実際のデータベクトルを渡すと、意味のある行列を作成できます。ベクトルが nrow * ncol より短い場合、R はベクトルを循環利用します。ただし、要素数がちょうど合うベクトルを指定するのがベストプラクティスです。

# Exam scores: 3 students, 4 subjects
scores_data <- c(88, 92, 75, 81,   # Student 1
                 79, 85, 90, 73,   # Student 2
                 95, 78, 82, 88)   # Student 3

exam_matrix <- matrix(scores_data, nrow = 3, ncol = 4, byrow = TRUE)
rownames(exam_matrix) <- c('Alice', 'Bob', 'Carol')
colnames(exam_matrix) <- c('Math', 'Science', 'English', 'History')
print(exam_matrix)

dim() — 次元の確認

dim(m) は、長さ 2 の numeric ベクトルを返します。最初の値が行数、次の値が列数です。個々の次元については、nrow(m) と ncol(m) も使用できます。

m <- matrix(1:20, nrow = 4, ncol = 5)
cat('dim(m):', dim(m), '
')       # 4 5
cat('nrow(m):', nrow(m), '
')     # 4
cat('ncol(m):', ncol(m), '
')     # 5
cat('Total elements:', length(m), '
')  # 20

is.matrix() — 型の確認

is.matrix(x) は、x が行列の場合に TRUE を返します。関数の入力値を検証する際に便利です。行列は配列でもあるため、is.array() も TRUE を返すことに注意してください。

m <- matrix(1:4, nrow = 2)
v <- c(1, 2, 3, 4)

cat('is.matrix(m):', is.matrix(m), '
')  # TRUE
cat('is.matrix(v):', is.matrix(v), '
')  # FALSE
cat('is.array(m): ', is.array(m), '
')   # TRUE (matrix IS an array)
cat('class(m):    ', class(m), '
')

ゼロ行列と単位行列

単一の値を循環利用すると、特殊な行列を作成できます。matrix(0, n, n) はゼロ行列を作成し、diag(n) は n × n の単位行列を作成します(対角成分は 1、それ以外は 0)。

# Zero matrix 3x3
zero_mat <- matrix(0, nrow = 3, ncol = 3)
cat('Zero matrix:
')
print(zero_mat)

# Identity matrix 3x3
identity_mat <- diag(3)
cat('Identity matrix:
')
print(identity_mat)

循環利用した値から行列を作成する

データベクトルが nrow * ncol より短い場合、R はベクトルを循環利用します(先頭から繰り返します)。ベクトルの長さが行列のサイズで割り切れない場合、R は警告を表示します。

# Recycle a 2-element vector into a 4x4 matrix
alternate <- matrix(c(0, 1), nrow = 4, ncol = 4)
cat('Recycled 0,1 into 4x4:
')
print(alternate)

# Checkerboard effect: fills column by column

nrow または ncol だけを指定する

nrow または ncol の一方だけを指定すれば十分です。R はデータの長さに基づいて、もう一方を自動的に計算します。データの要素数が割り切れない場合、R は循環利用して警告を表示します。

# Only specify nrow, R infers ncol
m1 <- matrix(1:12, nrow = 3)
cat('nrow=3 only, inferred ncol =', ncol(m1), '
')
print(m1)

# Only specify ncol, R infers nrow
m2 <- matrix(1:12, ncol = 4)
cat('ncol=4 only, inferred nrow =', nrow(m2), '
')

character 行列

行列は数値に限らず、カテゴリデータ、ゲーム盤、参照グリッド用の character 行列も作成できます。ただし、すべての要素が同じ型でなければならない点は変わりません。

# Tic-tac-toe board
board <- matrix(c('X', 'O', 'X',
                   'O', 'X', 'O',
                   'O', 'X', 'O'),
                nrow = 3, ncol = 3, byrow = TRUE)
cat('Tic-Tac-Toe board:
')
print(board)
cat('Type:', class(board), '
')

行列の作成:まとめ

R で行列を作成する方法をまとめます。

  • matrix(data, nrow, ncol) — 基本的な作成方法(デフォルトでは列方向に入力)
  • matrix(data, nrow, ncol, byrow=TRUE) — 行ごとに入力する
  • matrix(0, n, m) — ゼロ行列
  • diag(n) — 単位行列
  • dim(m)、nrow(m)、ncol(m) — 次元を確認する
  • is.matrix(m) — 型を確認する
# Quick creation reference
cat('3x2 column-fill:
'); print(matrix(1:6, 3, 2))
cat('3x2 row-fill:
');    print(matrix(1:6, 3, 2, byrow=TRUE))
cat('2x2 zeros:
');       print(matrix(0, 2, 2))
cat('3x3 identity:
');    print(diag(3))

クイックチェック

デフォルト(byrow = TRUEを指定しない場合)では、matrix()はどの順序で要素を埋めますか?

まとめ:行列の作成

すばらしいです!このレッスンの重要なポイントは次のとおりです。

  • matrix(data, nrow, ncol)は行列を作成します。デフォルトでは、dataを列ごとに埋めます
  • byrow = TRUEを使うと、行ごとに埋められます
  • 指定が必要なのはnrowまたはncolのどちらか一方だけです。もう一方はRが推測します
  • dim(m)はc(rows, cols)を返し、nrow()とncol()は行数と列数を個別に返します
  • is.matrix()はオブジェクトが行列かどうかを判定します
  • matrix(0, n, n)は零行列を作成し、diag(n)は単位行列を作成します
# Full workflow: create, inspect, verify
m <- matrix(seq(2, 24, by = 2), nrow = 4, ncol = 3, byrow = TRUE)
cat('Even numbers matrix:
')
print(m)
cat('Rows:', nrow(m), '| Cols:', ncol(m), '| Elements:', length(m), '
')

よくある質問

「matrix()による行列の作成」レッスンは無料ですか?

はい。「matrix()による行列の作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。

「matrix()による行列の作成」で何を学びますか?

data、nrow、ncol、byrowを指定して行列を作成します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

R Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「matrix()による行列の作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このR Academyレッスンでコードを書いて実行できますか?

はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. matrix()による行列の作成
  2. 行列のインデックス指定と部分抽出
  3. 行列の算術演算と操作
  4. 行列の転置と形状変更
← R Academyに戻る