熱線電話:13121318867

登錄
首頁精彩閱讀R語言定義多維數組
R語言定義多維數組
2018-03-14
收藏

R語言定義多維數組

數組有一個特征屬性叫做維數向量(dim屬性),維數向量是一個元素取正整數值的向量 ,其長度是數組的維數,比如維數向量有兩個元素時數組為二維數組(矩陣)。維數向量的 每一個元素指定了該下標的上界,下標的下界總為1。

一組值只有定義了維數向量(dim屬性)后才能被看作是數組。比如:

z <- 1:1500
dim(z) <- c(3, 5, 100)

這時z已經成為了一個維數向量為c(3,5,100)的三維數組。也可以把向量定義為一維數組 ,例如:

dim(z) <- 1500

數組元素的排列次序缺省情況下是采用FORTRAN的數組元素次序(按列次序),即第一下 標變化最快,最后下標變化最慢,對于矩陣(二維數組)則是按列存放。例如,假設數組a的 元素為1:24,維數向量為c(2,3,4),則各元素次序為a[1,1,1], a[2,1,1], a[1,2,1], a[2,2,1], a[1,3,1], …, a[2,3,4]。

用函數array()或matrix()可以更直觀地定義數組。array()函數的完全使用為array(x, dim=length(x), dimnames=NULL),其中x是第一自變量,應該是一個向量,表示數組的元素 值組成的向量。dim參數可省,省略時作為一維數組(但不同于向量)。dimnames屬性可以省 略,不省略時是一個長度與維數相同的列表(list,見后面),列表的每個成員為一維的名 字。例如上面的z可以這樣定義:

z <- array(1:1500, dim=c(3,5,100))
函數matrix()用來定義最常用的一種數組:二維數組,即矩陣。其完全格式為 matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

矩陣運算

矩陣是二維數組,但因為其應用廣泛所以對它定義了一些特殊的運算和操作。

函數t(A)返回矩陣A的轉置。nrow(A)為矩陣A的行數,ncol(A)為矩陣A的列數。

矩陣之間進行普通的加減乘除四則運算仍遵從一般的數組四則運算規則,即數組的對應元 素之間進行運算,所以注意A*B不是矩陣乘法而是矩陣對應元素相乘。

要進行矩陣乘法,使用運算符%%,A%%B表示矩陣A乘以矩陣B(當然要求A的列數等于B的 行數)。例如:

A <- matrix(1:12, nrow=4, ncol=3, byrow=T)
B <- matrix(c(1,0), nrow=3, ncol=2, byrow=T)
A
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12
B [,1] [,2] [1,] 1 0 [2,] 1 0 [3,] 1 0
A %*% B
[,1] [,2] [1,] 6 0 [2,] 15 0 [3,] 24 0 [4,] 33 0

另外,向量用在矩陣乘法中可以作為行向量看待也可以作為列向量看待,這要看哪一種觀 點能夠進行矩陣乘法運算。例如,設x是一個長度為n的向量,A是一個 R語言定義多維數組和數組的運算矩陣,則“x %% A %% x”表示二次型 R語言定義多維數組和數組的運算。但是,有時向量在矩陣乘法中的地位并不 清楚,比如“x %% x”就既可能表示內積 R語言定義多維數組和數組的運算也可能表示 R語言定義多維數組和數組的運算陣 R語言定義多維數組和數組的運算。因為前者較常用,所以S選擇表示前者, 但內積最好還是用crossprod(x)來計算。要表示 R語言定義多維數組和數組的運算,可以用“cbind(x) %% x”或“x %*% rbind(x) ”。

函數crossprod(X, Y)表示一般的交叉乘積(內積) R語言定義多維數組和數組的運算,即X的每一列與Y的每一列的內積組成的矩 陣。如果X和Y都是向量則是一般的內積。只寫一個參數X的crossprod(X)計算X自身的內積 R語言定義多維數組和數組的運算。
其它矩陣運算還有solve(A,b)解線性方程組 R語言定義多維數組和數組的運算,solve(A)求方陣A的逆矩陣,svd()計算奇 異值分解,qr()計算QR分解,eigen()計算特征向量和特征


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢