#矩阵
#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)