R 矩陣初識

2021-06-26 14:17:23 字數 2456 閱讀 1687

矩陣(matrix)是一種特殊的向量,包含兩個附加的屬性:行數和列數。所以矩陣也和向量一樣,有模式的概念,例如數值型和字元型。(但反過來,向量卻不能看作是只有一列或一行的矩陣。)

矩陣可通過函式matrix建立矩陣,一般使用格式為:

mymatrix = matrix( vector, nrow = rownumber, ncol = columnnumber, byrow = logicalvalue, dimnames=list( vectorrowname, vectorcolumnname ) )

其中,vector包含了矩陣的元素,nrow和ncol用以指定行和列的維數,dimnames包含了可選的、以字元型向量表示的行名和列名。選項byrow則表明矩陣應當按行填充(byrow=true)還是按列填充(byrow=false),預設情況下按列填充。

►建立矩陣

矩陣的行和列的下標都從1開始。例如矩陣a左上角的元素記作a[1, 1]。矩陣在r中是按列儲存的,也就是說先儲存第一列,再儲存第二列,以此類推。

方法一:建立矩陣的方法之一就是使用matrix()函式:

> y = matrix( c(1,2,3,4), nrow=2, ncol=2)

> y

[,1] [,2]

[1,]    1    3

[2,]    2    4

> y[, 2]

[1] 3 4

> y[2, ]

[1] 2 4

這裡把第一列(即1和2)與第二列(3和4)連線在一起。因此資料是(1,2,3,4)。然後我們給出行數和列數。由於r是按列儲存的,這就決定了這四個數在矩陣中的位置。上例指定了矩陣中全部的4個元素,因此沒必要同時設定列數ncol和行數nrow這兩個引數,只需要給出其中乙個就夠了。4個元素排成兩行,就意味著列數為2。

> matrix( c(1,2,3,4), nrow=2)

[,1] [,2]

[1,]    1    3

[2,]    2    4

> matrix( c(1,2,3,4), ncol=2)

[,1] [,2]

[1,]    1    3

[2,]    2    4

方法二:另外一種建立矩陣的方法是為矩陣的每乙個元素賦值:

> y = matrix(nrow=2, ncol=2)

> y[1, 1] <- 1

> y[2, 1] <- 2

> y[1, 2] <- 3

> y[2, 2] <- 4

> y

[,1] [,2]

[1,]    1    3

[2,]    2    4

用這種方法需要事先向r宣告y是乙個矩陣,並且給出它的行數和列數。

儘管r的矩陣是按列儲存的,但是可以通過把matrix()的byrow引數設定為true,使矩陣元素按行排列。以下是使用byrow的乙個例子:

> m = matrix( c(1,2,3,4,5,6), nrow=2, byrow=t)

> m

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

[1,]    1    2    3

[2,]    4    5    6

儘管這樣設定,但是矩陣本身依然是按列儲存的,引數byrow改變的只是資料輸入的順序。當讀取的資料檔案是按這種方式組織時,可能會更方便。

> vector <- c( 1:4 )

> vrnames <- c( "row1", "row2" )

> vcnames <- c( "col1", "col2" )

> matrix( vector, nrow=2, byrow=true, dimnames=list( vrnames, vcnames ) )

col1 col2

row1    1    2

row2    3    4

►一些函式

ю nrow( z ):返回矩陣的行數

ю ncol( z )返回矩陣的列數

ю dim( z ):是乙個由矩陣的行數和列數組成的向量

ю attributes( z ):返回屬性值

ю as.matrix( x ):函式將向量轉化為矩陣。

►矩陣行和列的命名問題

訪問矩陣元素最直接的方法是通過行號和列號,但也可以使用行名和列名,這些名稱用來訪問指定的列。

> z <- matrix( 1:6, nrow=2 )

> colnames( z )

null

> colnames( z ) <- c( "a", "b", "c" )> z

a b c[1,] 1 3 5[2,] 2 4 6

> colnames( z )

[1] "a" "b" "c"

> z[ , "b" ]

[1] 3 4

初識R語言

原由 我的初衷是為了處理資料,才去關注資料統計分析的軟體,首先是關注matlab,但是matlab是收費的,我只好找了個破解版的裝上,學了沒幾次,之後又發現了r語言,r語言是免費使用的,而後發現r在國內的逐漸熱門起來,個人覺得其實r會更有前途些。下面,先來熟悉下語法 語法 賦值 x 1 首先宣告乙個...

初識R語言

r語言是在資料統計方面有非常強大功能的開發語言。因為它提供了很多現成的資料分析的函式和工具,而這些東西,用其他語言實現,則費時費力,重複開發。r語言在分布式計算方面也提供很好的支援,例如向量化的概念,在r語言中能得到很好的體現。r語言的可擴充套件性很好,它通過開發包的形式提供功能,任何人都可以做乙個...

初識Mat矩陣

mat矩陣是乙個類,定義於core.cpp中 mat舉證包含兩個部分 矩陣頭 包含矩陣的大小,儲存方式,矩陣儲存位址 指向矩陣包含畫素值的指標 data font size 12px class cv exports mat mat的儲存是逐行儲存的,矩陣中的資料型別包括 mat 對應的是cv 8u...