English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
配列もまた 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