资源描述:
《R语言的矩阵运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、矩阵计算R笔记安宁宁暨南大学经济学院统计学系nning_an@sina.com1创建一个向量在R中可以用函数c()来创建一个向量,例如:>x=c(1,2,3,4)>x[1]12342创建一个矩阵在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值。>args(matrix)function(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)data项为必要的矩阵元素,nrow为行数,ncol为列数,注意nrow与ncol的乘积应为矩阵元素个数,byrow项控制排列元素时是否按行进行,dimn
2、ames给定行和列的名称。例如:>matrix(1:12,nrow=3,ncol=4)[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912>matrix(1:12,nrow=4,ncol=3)[,1][,2][,3][1,]159[2,]2610[3,]3711[4,]4812>matrix(1:12,nrow=4,ncol=3,byrow=T)[,1][,2][,3][1,]123[2,]456[3,]789[4,]101112>rowname[1]"r1""r2""r3">colname=c("c1","c2","c3","c
3、4")>colname[1]"c1""c2""c3""c4">matrix(1:12,nrow=3,ncol=4,dimnames=list(rowname,colname))c1c2c3c4r114710r2258113矩阵转置A为m×n矩阵,求A'在R中可用函数t(),例如:>A=matrix(1:12,nrow=3,ncol=4)>A[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912>t(A)[,1][,2][,3][1,]123[2,]456[3,]789[4,]101112若将函数t()作用于一个向量x,则R默认x为列
4、向量,返回结果为一个行向量,例如:>x[1]12345678910>t(x)[,1][,2][,3][,4][,5][,6][,7][,8][,9][,10][1,]12345678910>class(x)[1]"integer">class(t(x))[1]"matrix"若想得到一个列向量,可用t(t(x)),例如:>x[1]12345678910>t(t(x))[,1][1,]1[2,]2[3,]3[4,]4[5,]5[6,]6[7,]7[8,]8[9,]9[10,]10>y=t(t(x))>t(t(y))[,1][1,]1[2,]2[3,]3[4,]4[5
5、,]5[6,]6[7,]7[8,]8[9,]9[10,]104矩阵相加减在R中对同行同列矩阵相加减,可用符号:“+”、“-”,例如:>A=B=matrix(1:12,nrow=3,ncol=4)>A+B[,1][,2][,3][,4][1,]281420[2,]4101622[3,]6121824>A-B[,1][,2][,3][,4][1,]0000[2,]0000[3,]00005数与矩阵相乘A为m×n矩阵,c>0,在R中求cA可用符号:“*”,例如:>c=2>c*A[,1][,2][,3][,4][1,]281420[2,]4101622[3,]612182
6、46矩阵相乘A为m×n矩阵,B为n×k矩阵,在R中求AB可用符号:“%*%”,例如:>A=matrix(1:12,nrow=3,ncol=4)>B=matrix(1:12,nrow=4,ncol=3)>A%*%B[,1][,2][,3][1,]70158246[2,]80184288[3,]90210330若A为n×m矩阵,要得到A'B,可用函数crossprod(),该函数计算结果与t(A)%*%B相同,但是效率更高。例如:>A=matrix(1:12,nrow=4,ncol=3)>B=matrix(1:12,nrow=4,ncol=3)>t(A)%*%B[,1
7、][,2][,3][1,]3070110[2,]70174278[3,]110278446>crossprod(A,B)[,1][,2][,3][1,]3070110[2,]70174278[3,]1102784467矩阵对角元素相关运算例如要取一个方阵的对角元素,>A=matrix(1:16,nrow=4,ncol=4)>A[,1][,2][,3][,4][1,]15913[2,]261014[3,]371115[4,]481216>diag(A)[1]161116对一个向量应用diag()函数将产生以这个向量为对角元素的对角矩阵,例如:>diag(diag(A
8、))[,1