R 數(shù)組

數(shù)組也是 R 語言的對象,R 語言可以創(chuàng)建一維或多維數(shù)組。

R 語言數(shù)組是一個同一類型的集合,前面我們學(xué)的矩陣 matrix 其實就是一個二維數(shù)組。

向量、矩陣、數(shù)組關(guān)系可以看下圖:

R 語言數(shù)組創(chuàng)建使用 array() 函數(shù),該函數(shù)使用向量作為輸入?yún)?shù),可以使用 dim 設(shè)置數(shù)組維度。

array() 函數(shù)語法格式如下:

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

參數(shù)說明:

  • data 向量,數(shù)組元素。

  • dim 數(shù)組的維度,默認是一維數(shù)組。

  • dimnames 維度的名稱,必須是個列表,默認情況下是不設(shè)置名稱的。

以下示例我們創(chuàng)建一個 3 行 3 列的的二維數(shù)組:

# 創(chuàng)建兩個不同長度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# 創(chuàng)建數(shù)組
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

, , 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 參數(shù)來設(shè)置各個維度的名稱::

# 創(chuàng)建兩個不同長度的向量
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")

# 創(chuàng)建數(shù)組,并設(shè)置各個維度的名稱
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names))
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

, , 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

訪問數(shù)組元素

如果想獲取數(shù)組元素,可以通過使用元素的列索引和行索引,類似坐標形式。

# 創(chuàng)建兩個不同長度的向量
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")

# 創(chuàng)建數(shù)組
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))

# 顯示數(shù)組第二個矩陣中第三行的元素
print(result[3,,2])

# 顯示數(shù)組第一個矩陣中第一行第三列的元素
print(result[1,3,1])

# 輸出第二個矩陣
print(result[,,2])

執(zhí)行以上代碼輸出結(jié)果為:

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

操作數(shù)組元素

由于數(shù)組是由多個維度的矩陣組成,所以我們可以通過訪問矩陣的元素來訪問數(shù)組元素。

# 創(chuàng)建兩個不同長度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# 創(chuàng)建數(shù)組
array1 <- array(c(vector1,vector2),dim = c(3,3,2))

# 創(chuàng)建兩個不同長度的向量
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))

# 從數(shù)組中創(chuàng)建矩陣
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]

# 矩陣相加
result <- matrix1+matrix2
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

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

另外我們可以使用 apply() 元素對數(shù)組元素進行跨維度計算,語法格式如下:

apply(x, margin, fun)

參數(shù)說明:

  • x  數(shù)組

  • margin 數(shù)據(jù)名稱

  • fun 計算函數(shù)

以下我們使用 apply() 函數(shù)來計算數(shù)組兩個矩陣中每一行對數(shù)字之和。

# 創(chuàng)建兩個不同長度的向量
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)

# 創(chuàng)建數(shù)組
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)

# 計算數(shù)組中所有矩陣第一行的數(shù)字之和
result <- apply(new.array, c(1), sum)
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

, , 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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清