#矩阵 #1.定义矩阵
> m<-matrix(c(1:10),nrow=2,ncol=5)#这里的第一个nrow为行,ncol为列数。但是数组的数量必须与矩阵的第一个参数的数目相同,同时行数和列数只要列出一个就可以
> m<-matrix(c(1:10),nrow=2) > m<-matrix(c(1:10),ncol=5)#这里这三个m是一样的 #2.这里默认为按列排序,也可以改为按行排序
> m2<-matrix(c(1:10),nrow=2,byrow=T) > m2#3.可以给矩阵的行和列数起名字方法如下
> rname<-c("R1","R2") > cname<-c("C1","C2","C3","C4","C5") > dimnames(m)<-list(rname,cname) > m#4.dim函数,它是维数的函数。用法
> ?dim#用法1.可以求出变量的维数
> dim(m)#这里由于m为一个2行5列的矩阵,所以输出为[1] 2 5 #方法2.可以给一个数组添加维数
> x<-c(1:20) > dim(x)<-c(2,2,5) x#这里x可以理解为变为长宽高分别为2,2,5的3维数组(其实是空间结构).同理也可以重命名 #4.n维数组也可以用array函数来创建
> ?array > dim1<-c("A1","A2") > dim2<-c("B1","B2","B3") > dim3<-c("C1","C2","C3","C4") > array(c(1:24),c(2,3,4),dimnames =list(dim1,dim2,dim3))#5.矩阵的索引,注意:R中的矩阵和python其他的索引不同。它是以1开始的. #可以直接用行数和列数来访问元素
> m[1,2]#如果省略行号或者列号可以直接访问一行或一列
> m[2,] > m[,3]#如果我们定义了行名或者列名可以直接用名字来进行索引
> m["R1","C2"]#6.矩阵可以直接进行运算
> m+1#也可以两个矩阵相加但是要注意两个矩阵的行数和列数要相同
> x1<-matrix(c(1:20),nrow=4) > x2<-matrix(c(41:60),nrow=4) > x1+x2#直接相乘是各个数相乘
> x1*x2#也可以计算矩阵的相乘(这两种都可以)
> x1 %*% x2 > crossprod(x1,x2)#矩阵的转置可以用t()函数完成
> x1 > t(x1)#R中的函数det()将计算方阵A的行列式
> det(X)#diag方阵最小矩阵的对角线
> x3<-matrix(c(1:16),nrow=4,byrow = TRUE) > diag(x3)#矩阵的逆
> solve(x3)#7.4个函数
> colSums(m) > colSums(m[,1])#这里是不行的会显示“Error in colSums(m[, 1]) : 'x’必需是阵列,而且至少得有两个维度” #也就是说他必须要算所有列的和,但是我们如果想要计算某一列的和:
> tmp<-m[,1] > sum(tmp)#这样就可以了
> rowSums(m) > colMeans(m) > rowMeans(m)