也同步更新于我的个人博客: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()类似,但是纵向连接(按照行方式)
请发表评论