陣列

利用 rbind、cbind 與 array 函數建立陣列

陣列可視為多維度的向量變數,跟向量一樣,所有陣列元素的資料屬性必須一致。

> x <- c(1, 2, 3)
> y <- c(4, 5, 6)

> rbind(x, y) # rbind 是利用 row(橫) 合併。
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6

> cbind(x, y) # cbind 是利用 column(直) 合併。
     x y
[1,] 1 4
[2,] 2 5
[3,] 3 6

> array(x,c(1,3)) # c(1,3) 代表產生 1 x 3 陣列
     [,1] [,2] [,3]
[1,]    1    2    3

> array(x,c(2,3)) # c(2,3) 代表產生 2 x 3 陣列
     [,1] [,2] [,3]
[1,]    1    3    2
[2,]    2    1    3

> array(x,c(3,3)) # c(3,3) 代表產生 3 x 3 陣列
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3

透過指標提取資料

陣列與向量相同,可以透過指標或名稱選取陣列的元素。

> x <- c(1, 2, 3)
> y <- c(4, 5, 6)

> z = rbind(x, y)
> z
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6

> z[,1] # 選取第一行(column、直)
x y
1 4

> z[1,] # 選取第一列(row、橫)
[1] 1 2 3

> z[1,1:2] # 選取第一列第一到二行
[1] 1 2

基本相關函數

  • 陣列加減乘除
  • length:計算陣列中的所有元素個數。
  • dim:列出維度資訊
  • ncol、nrow:計算(column、直) 或 (row、橫) 個數。
  • aperm:將陣列轉置
> x <- c(1, 2, 3)
> y <- c(4, 5, 6)

> z = rbind(x, y)
> z
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6

> z + z
  [,1] [,2] [,3]
x    2    4    6
y    8   10   12

> z - 2*z
  [,1] [,2] [,3]
x   -1   -2   -3
y   -4   -5   -6

> z * z # 相對應的陣列元素相乘
  [,1] [,2] [,3]
x    1    4    9
y   16   25   36

> z / z # 相對應的陣列元素相除
  [,1] [,2] [,3]
x    1    1    1
y    1    1    1

> length(z)
[1] 6

> dim(z) # 前者是 row,後者是 column。
[1] 2 3
> ncol(z)
[1] 3
> nrow(z)
[1] 2

> aperm(z) # 等同是從 rbind 轉成 cbind
     x y
[1,] 1 4
[2,] 2 5
[3,] 3 6

results matching ""

    No results matching ""