矩陣(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...