也同步更新於我的個人博客: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()類似,但是縱向連接(按照行方式)