熱線電話:13121318867

登錄
2020-08-23 閱讀量: 1891
R語言數組與矩陣的建立

數組與矩陣的建立

前面已經指出數組是一個kp¥ 1q維的數據表; 矩陣是數組的一個特例,其 維數k 2,而上面所述的向量自然也可看成維數為k 1的數組5. 而且向量、 數組或者矩陣中的所有元素都必須是同一種類型的. 對于一個向量,其屬性由 其類型和長度構成;而對于數組與矩陣, 除了類型和長度兩個屬性外, 還需要 維數dim這個屬性來描述. 因此如果一個向量需要在R中以數組的方式被處理, 則必須含有一個維數向量作為它的dim屬性。

數組的建立

R中數組由函數array( )建立, 其一般格式為:

> array(data, dim, dimnames)

其中data為一向量, 其元素用于構建數組; dim為數組的維數向量(為數值型向量); dimnames為由各維的名稱構成的向量(為字符型向量), 缺省為空.

以一個3維的數據為例來說明. 設A是一個存放在向量a中的24個數據項組成的數組, A的維數向量為c(3,4,2). 維數可由命令

> dim(A) <- c(3,4,2)

建立. 這樣, 命令

> A <- array(a, dim = c(3,4,2))

就建立了數組A. 24個數據項在數組A中的順序依次為: a[1,1,1],a[2,1,1].....a[2,4,2],a[3,4,2] 我們再來看一個具體的例子:

> A <- array(1:8, dim = c(2, 2, 2))

> A

, , 1

[,1] [,2]

[1,] 1 3

[2,] 2 4

, , 2

[,1] [,2]

[1,] 5 7

[2,] 6 8

> dim(A)

[1] 2 2 2

> dimnames(A) <- list(c("a", "b"), c("c", "d"), c("e", "f"))

> A

, , e

c d

a 1 3

b 2 4

, , f

c d

a 5 7

b 6 8

> colnames(A)

[1] "c" "d"

> rownames(A)

[1] "a" "b"

> dimnames(A)

[[1]]

[1] "a" "b"

[[2]]

[1] "c" "d"

[[3]]

[1] "e" "f"

如果數據項太少,則采用循環準則填充數組(或矩陣), 見下面的的第二個例子.

矩陣的建立

因為矩陣是數組的特例,因此矩陣也可以用函數array( )來建立, 例如

> A <- array(1:6, c(2,3))

> A

[,1] [,2] [,3]

[1,] 1 3 5

[2,] 2 4 6

> A<-array(1:4,c(2,3))

> A

[,1] [,2] [,3]

[1,] 1 3 1

[2,] 2 4 2

> A<-array(1:8,c(2,3))

> A

[,1] [,2] [,3]

[1,] 1 3 5

[2,] 2 4 6

然而, 由于矩陣在數學及統計中的特殊性, 在R中最為常用的是使用命令matrix( )建立矩陣, 而對角矩陣用函數diag( )建立更為方便, 例如

> X <- matrix(1, nr = 2, nc = 2)

[,1] [,2]

[1,] 1 1

[2,] 1 1

> X <- diag(3) # 生成單位陣

[,1] [,2] [,3]

[1,] 1 0 0

[2,] 0 1 0

[3,] 0 0 1

> v <- c(10, 20, 30)

> diag(v)

[,1] [,2] [,3]

[1,] 10 0 0

[2,] 0 20 0

[3,] 0 0 30

> diag(2.5, nr = 3, nc = 5)

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

[1,] 2.5 0.0 0.0 0 0

[2,] 0.0 2.5 0.0 0 0

[3,] 0.0 0.0 2.5 0 0

> X <- matrix(1:4, 2) # 等價于X <- matrix(1:4, 2, 2)

> X

[,1] [,2]

[1,] 1 3

[2,] 2 4

> rownames(X) <- c("a", "b")

> colnames(X) <- c("c", "d")

> X

c d

a 1 3

b 2 4

> dim(X)

[1] 2 2

> dimnames(X)

[[1]]

[1] "a" "b"

[[2]]

[1] "c" "d"

注意:

?循環準則仍然適用于matrix( ), 但要求數據項的個數等于矩陣的列數的倍數, 否則會出現警告.

?矩陣的維數使用c( )會得到不同的結果(除非是方陣), 因此需要小心.

?數據項填充矩陣的方向可通過參數byrow來指定, 其缺省是按列填充的(byrow=FALSE). byrow=TRUE表示按行填充數據.


37.8010
0
關注作者
收藏
評論(0)

發表評論

暫無數據
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码