R語言定義多維陣列

2021-08-16 23:43:47 字數 2084 閱讀 9631

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()計算特徵向量和特徵值

動態定義多維陣列

1.普通陣列的定義 維數 const unsigned int buf size 512,max files 20 int staff size 27 const unsigned sz get size char input buffer buf size ok,是const變數 string f...

R語言 陣列

陣列是可以在兩個以上維度中儲存資料的r資料物件。例如 如果我們建立乙個維度 2,3,4 的陣列,則它建立4個矩形矩陣,每個矩陣具有2行和3列。陣列只能儲存資料型別。使用array 函式建立陣列。它使用向量作為輸入,並使用dim引數中的值建立陣列。例以下示例建立乙個由兩個3x3矩陣組成的陣列,每個矩陣...

R語言 3 14 多維標度法MDS

多維標度分析古典函式cmdscale的用法 cmdscale d,k 2,d表示進行多維標度分析的距離矩陣,k表示維度,預設取2維 d的古典解 eg根據城市的距離矩陣,在二維平面上把城市標出來 計算出二維座標的十個座標點 畫圖標點 2.非度量法多維標度分析函式isomds的用法 需要呼叫包mass ...