從零開始學習R語言(三)——數據結構之“矩陣(Matrix)”


本文首發於知乎專欄:https://zhuanlan.zhihu.com/p/60140022

也同步更新於我的個人博客:https://www.cnblogs.com/nickwu/p/12567139.html 


 3. [二維]:矩陣(Matrix)

3.1 創建一個矩陣

m <- c(45,23,66,77,33,44,56,12,78,23)
dim(m) <- c(2,5)  #創建一個2行5列的矩陣,按照從上至下,從左往右的順序排列
#輸出: [,1] [,2] [,3] [,4] [,5]
 [1,]   45   66   33   56   78
 [2,]   23   77   44   12   23
#可以采用m[1,2]或m[1,]等形式對其進行索引
​
m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)            #形同上一種
​
m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=TRUE) #形同上一種,其中byrow默認等於TRUE,可省略。若改為FALSE則按列排列。
 
m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=FALSE) 
#輸出: [,1] [,2] [,3] [,4] [,5]
 [1,]   45   66   33   56   78
 [2,]   23   77   44   12   23

3.2 矩陣的索引

results <- matrix(c(10,30,40,50,43,56,21,30),2,4,byrow=TRUE)
colnames(results) <- c('1qrt','2qrt','3qrt','4qrt') #可以利用colnames()對矩陣的列命名
rownames(results) <- c('store1','store2')           #可以利用rownames()對矩陣的行命名
results['store1',]                                  #可以用行名或列名對矩陣進行索引
results['store2',c('1qrt','4qrt')]

3.3 矩陣的轉置

t( )函數即可將矩陣轉置

3.4 數字與矩陣相乘

數字與一個矩陣相乘,則與矩陣中每一個元素相乘

m <- matrix(c(1,4,2,5,3,6),2,3)
m*3
#輸出:
       [,1] [,2] [,3]
 [1,]    3    6    9
 [2,]   12   15   18

3.5 矩陣的加法

同數學規則一致,矩陣的加法即對應位置元素相加

3.6 矩陣的乘法

矩陣的乘法用 m1%*%m2 (注意:一定要滿足數學上矩陣相乘規則)

m1 <- matrix(c(1,1,1,1,1,1,1,1,1),3,3)
m2 <- matrix(c(1,0,0,0,1,0),3,2)
m1 %*% m2
#輸出:
       [,1] [,2]
 [1,]    1    2
 [2,]    1    2
 [3,]    1    2
#注意,m2 %*% m1 無意義,因為不符合矩陣相乘的規則,若要使之成立,需要將矩陣轉置

3.7 利用cbind()或rbind()把向量和一個矩陣合並

m1 <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
m1
cbind(c(4,76),m1[,4])
#輸出: [,1] [,2]
[1,]    4   56
[2,]   76   12
#提示,cbind()是把向量和矩陣橫向連接(按照列方式)
​
m2 <- matrix(rep(10,20),4,5)
m2
m3 <- rbind(m1[1,],m2[3,])
#輸出: [,1] [,2] [,3] [,4] [,5]
[1,]   45   66   33   56   78
[2,]   10   10   10   10   10
#提示:rbind()類似,但是縱向連接(按照行方式)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM