English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R 配列

配列もまた R 言語のオブジェクトであり、R 言語は一次元または多次元の配列を作成できます。

R 言語の配列は同一タイプの集合であり、私たちが学んだ行列 matrix は実際には二つの次元の配列です。

ベクター、行列、配列の関係は以下の図を参照してください:

R 言語の配列の作成には array() 函数を使用します。この関数はベクターを入力パラメータとして使用し、dimを使用して配列の次元を設定できます。

array() 函数の文法形式は以下の通りです:

array(data = NA, dim = length(data), dimnames = NULL)

パラメータ説明:

  • data 向量、配列の要素。

  • dim 配列の次元はデフォルトで一つの次元の配列です。

  • dimnames 次元の名前はリストでなければなりません。デフォルトでは名前は設定されていません。

以下の例では、以下のように作成します 3 行 3 列の二つの次元の配列:

# 長さの異なる2つのベクトルの作成
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 配列の作成
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)

以下のコードを実行すると、結果が表示されます:

, , 1
     [,1], [,2], [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [,1], [,2], [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15

各次元の名前を設定するために dimnames パラメータを使用します::

# 長さの異なる2つのベクトルの作成
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1"COL2"COL3")
row.names <- c("ROW1"ROW2"ROW3")
matrix.names <- c("Matrix1"Matrix2")
# 配列を作成し、各次元の名前を設定
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
print(result)

以下のコードを実行すると、結果が表示されます:

, , Matrix1
     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15
, , Matrix2
     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15

配列の要素にアクセス

配列の要素を取得するには、要素の列インデックスと行インデックスを使用し、座標形式で似たように行います。

# 長さの異なる2つのベクトルの作成
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1"COL2"COL3")
row.names <- c("ROW1"ROW2"ROW3")
matrix.names <- c("Matrix1"Matrix2")
# 配列の作成
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
# 配列の第2つの行列の第3行の要素を表示
print(result[3,,,2])
# 配列の第1つの行列の最初行の第3列の要素を表示
print(result[1,3,1])
# 第2つの行列を出力
print(result[,,2])

以下のコードを実行すると、結果が表示されます:

COL1 COL2 COL3 
   3   12   15 
[1] 13
     COL1 COL2 COL3
ROW1    5   10   13
ROW2    9   11   14
ROW3    3   12   15

配列要素の操作

配列は複数の次元の行列で構成されているため、行列の要素にアクセスすることで配列の要素にアクセスできます。

# 長さの異なる2つのベクトルの作成
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 配列の作成
array1 <- array(c(vector1,vector2),dim = c(3,3,2))
# 長さの異なる2つのベクトルの作成
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))
# 配列から行列の作成
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]
# 行列の加算
result <- matrix1+matrix2
print(result)

以下のコードを実行すると、結果が表示されます:

     [,1], [,2], [,3]
[1,]   10   20   26
[2,]   18   22   28
[3,]    6   24   30

また、以下を使用できます: apply() 要素が配列の要素に対して、次の形式で跨维度計算を行います:

apply(x, margin, fun)

パラメータ説明:

  • x  配列

  • margin データ名

  • fun 計算関数

以下では、apply()関数を使用して、配列の2つの行列の各行の数字の和を計算します。

# 長さの異なる2つのベクトルの作成
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# 配列の作成
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# 配列のすべての行列の最初の行の数字の和を計算
result <- apply(new.array, c(1), sum)
print(result)

以下のコードを実行すると、結果が表示されます:

, , 1
     [,1], [,2], [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15
, , 2
     [,1], [,2], [,3]
[1,]    5   10   13
[2,]    9   11   14
[3,]    3   12   15