Menu
Coddy logo textTech

行列の作成

CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 17/64。

行列は行と列に配置されたベクトルで、すべての値が同じ型です。matrix(data, nrow = ...)は、デフォルトでは列ごとに値を埋めます:

m <- matrix(1:6, nrow = 2)
print(m)

出力:

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

byrow = TRUE を追加すると、行ごとに埋められます。これは、1 行に 1 つのデータが記述されている形式に対応します。

m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m)

出力:

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

nrow または ncol のいずれかを指定すると、R はデータの長さからもう一方を計算します。

dim(m)は行数と列数を返し、nrow()とncol()はそれぞれ一方だけを返します。matrix(0, nrow = 2, ncol = 3)は、行列を埋めるために単一の値を繰り返します。

m <- matrix(0, nrow = 2, ncol = 3)
print(dim(m))
print(nrow(m) * ncol(m))
print(length(m))

出力:

[1] 2 3
[1] 6
[1] 6

rbind() はベクトルを行として積み重ね、cbind() は列として積み重ねます。これにより、別々のベクトルから行列を作成できます。

a <- c(1, 2, 3)
b <- c(4, 5, 6)
print(rbind(a, b))
print(dim(cbind(a, b)))

出力:

  [,1] [,2] [,3]
a    1    2    3
b    4    5    6
[1] 3 2
challenge icon

チャレンジ

簡単

make_grid(values, n_cols)を完成させてください。valuesを行ごとに格納する、n_cols列の行列を返します。値の数は常にn_colsの倍数です。

提供されたコードは、カンマ区切りの行として値を読み取り、次の行からn_colsを読み取ります。返された行列の各行をそれぞれ独立した行に出力し、その後にサイズをrows x columnsとして出力します。

自分で試してみよう

make_grid <- function(values, n_cols) {
  # ここにコードを書いてください
  matrix(values)
}

# 提供された入力/出力コード: そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
values <- as.numeric(strsplit(input[1], ",")[[1]])
m <- make_grid(values, as.numeric(input[2]))
for (i in seq_len(nrow(m))) cat(m[i, ], "\n")
cat(nrow(m), "x", ncol(m), "\n")
quiz icon腕試し

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

ロジックとフローのすべてのレッスン

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