版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、R 语言数据构造向量,矩阵1向量和赋值xx 定义向量x,但是不显示结果,用print(x) 或者直接输入x 来显示x的具体值。1.变量名可由字母数字和点号构成,但是注意名称不能以数字开始,数字后不能紧跟点号,点号开头的变量名是特殊的,尽量避免。变量名区分大小写,X和x表示不同的变量。例如可使用变量名 height.lyr来表示一岁儿童的身高。2.有些变量名已经被系统使用,比如diff, df,pt等,再如c,q,t,C,D,F,I,T等,如果重新定义可能将其失去原意引起混淆。2向量运算1/x 直接显示运算结果y=1/x 定义新的向量但是不显示结果y=c(x,0,x) #维数为11,#为注释,可
2、放在语句后,用#隔开向量可以被用于算术表达式中,操作是按照向量中的元素一个一个进行的。同一个表达式中的向量并不需要具有相同的长度(可以运算,但是会有警告,最好不要这样)。如果它们的长度不同,表达式的结果是一个与表达式中最长向量有相同长度的向量。表达式中较短的向量会根据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹配。而常数很明显的将被不断重复。3所以在上面的赋值前提下命令v-2*x+y+1产生一个长度为11的新向量v,逐个元素的进行运算,其中2*x被重复2.2次,y被重复1次,常数1被重复11次。逐个元素(如果牵扯到矩阵运算需要特别注意)进行运算的操作符包括+,-,*,/
3、,log,exp,sin,cos,tan,sqrt。max和min的作用是选出所给向量中最大的或最小的元素。range函数的值是一个长度为2的向量,即c(min(x),max(x)。length(x)返回了向量x中元素的个数,也就是x的长度。sum(x)给出了x中所有元素的总和,prod(x)给出x中所有元素的乘积。4两个统计函数是mean(x)和var(x),sd(x),分别计算样本均值和样本方差和标准差,这三个函数分别相当于sum(x)/length(x),sum(x-mean(x)2)/(length(x)-1),sqrt(sum(x-mean(x)2)/(length(x)-1)。如果
4、var()的参数是一个n*p的矩阵,那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向量。mean()同理。sort(x)返回一个与x具有相同长度的向量,其中的元素按升序排列。还有其他更灵活的排序功能(参见order()和sort.list()order(y) yorder(y) yorder(y,decreasing=T, na.last = T)。5平行的最大最小函数pmax和pmin将返回一个与最长的向量长度相等的向量,向量中的元素由参数中所有向量在相应位置的最大值(最小值)组成。 x - sort(rnorm(100); cH class(x)1 integer c
5、lass(t(x)1 matrix10矩阵四则运算在R中对同行同列矩阵相加减,可用符号:“”、“”,例如: A=B=matrix(1:12,nrow=3,ncol=4)A+BA-BA*B 对应元素直接相乘(矩阵的Hadamard积),不是矩阵相乘A为mn矩阵,B为nk矩阵,在R中求AB可用符号:“*”,A=matrix(1:12,nrow=3,ncol=4)B=matrix(1:12,nrow=4,ncol=3)A%*%B.A=matrix(1:12,nrow=4,ncol=3)B=matrix(1:12,nrow=4,ncol=3)要得到AB,可用函数crossprod() 该函数计算结果与
6、t(A)%*%B相同,但是效率更高11与对角线有关的运算例如要取一个方阵的对角元素,A=matrix(1:16,nrow=4,ncol=4)diag(A)diag(diag(A)#构建对角矩阵。diag(3)#对一个正整数z应用diag()函数将产生以z维单位矩阵。12矩阵求逆矩阵求逆可用函数solve(),应用solve(a, b)运算结果是解线性方程组ax = b,若b缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆,例如:A=diag(1:4)B=solve(A)C=solve(A,(1:4)A=matrix(rnorm(16),4,4)solve(A)solve (A) %*%A13
7、矩阵的特征根和特征向量矩阵A的谱分解为A=UU,其中是由A的特征值组成的对角矩阵,U的列为A的特征值对应的特征向量,在R中可以用函数eigen()函数得到U和。A=diag(4)+1A.eigen=eigen(A,symmetric=T, only.values = FALSE)symmetric=T为是否对称阵的判别。若指定为对称阵,则命令执行,结果中U为标准正交化的特征向量。否则自行检查是否为对称阵,非对称阵无法运行。b=A.eigen$valuesBB=diag(b)TT=A.eigen$vectorsTT%*%t(TT)TT%*%BB%*%t(TT)-A14矩阵的Choleskey分解
8、 对于正定矩阵A,可对其进行Choleskey分解,即:A=PP,其中P为上三角矩阵,在R中可以用函数chol()进行Choleskey分解,例如:A=diag(4)+1chol(A)t(chol(A)%*%chol(A)crossprod(chol(A),chol(A)若矩阵为对称正定矩阵,可以利用Choleskey分解求行列式的值,如: prod(diag(chol(A)2)#prod为矩阵中所有元素相乘 det(A)以上两个都是求对称正定阵A的行列式。若矩阵为对称正定矩阵,可以利用Choleskey分解求矩阵的逆,这时用函数chol2inv(),这种用法更有效。如:chol2inv(ch
9、ol(A);solve(A)15矩阵奇异值分解 A为mn矩阵,rank(A)= r, 可以分解为:A=UDV,其中UU=VV=I。在R中可以用函数scd()进行奇异值分解,例如: A=matrix(1:18,3,6);svd(A)A.svd=svd(A)A.svd$u%*%diag(A.svd$d)%*%t(A.svd$v)#矩阵A t(A.svd$u)%*%A.svd$u#单位矩阵16矩阵的维数在R中很容易得到一个矩阵的维数,函数dim()将返回一个矩阵的维数,nrow()返回行数,ncol()返回列数17矩阵的行和、列和、行平均与列平均在R中很容易求得一个矩阵的各行的和、平均数与列的和、平
10、均数,例如:rowSums(A);rowMeans(A);colSums(A);colMeans(A)上述关于矩阵行和列的操作,还可以使用apply()函数实现。apply(X, MARGIN, FUN, .)其中:x为矩阵,MARGIN用来指定是对行运算还是对列运算,MARGIN1表示对行运算,MARGIN2表示对列运算,FUN用来指定运算函数, .用来给定FUN中需要的其它的参数,例如:apply(A,1,sum); apply(A,1,mean)apply(A,2,sum); apply(A,2,mean)apply()函数功能强大,我们可以对矩阵的行或者列进行其它运算,例如:计算每一列
11、的方差 A=diag(rep(1,5);apply(A,2,var); apply(A,2,function(x,a)x*a,a=2)注意:apply(A,2,function(x,a)x*a,a=2)与A*2效果相同,此处旨在说明如何应用alpply函数。18取矩阵的行或列的下标在R中定义了的这两个函数用于取矩阵元素的行或列下标矩阵,例如矩阵A=aijmn,row()函数将返回一个与矩阵A有相同维数的矩阵,该矩阵的第i行第j列元素为i,函数col()类似。例如: x=matrix(1:12,3,4)row(x)col(x)19取矩阵的上下三角部分函数lower.tri()和函数upper.t
12、ri()可以很方便的取到一个矩阵的上、下三角部分元素的逻辑判断值。用法如,xupper.tri(x)=0 #把上三角变成0.20矩阵XX的逆在统计计算中,我们常常需要计算这样矩阵的逆,如OLS估计中求系数矩阵。R中的包“strucchange”提供了有效的计算方法。 args(solveCrossprod)function (X, method = c(“qr”, “chol”, “solve”)其中:method指定求逆方法,选用“qr”效率最高,选用“chol”精度最高,选用“slove”与slove(crossprod(x,x)效果相同,例如: A=matrix(rnorm(16),4,
13、4) solveCrossprod(A,method=qr) #首先安装包“strucchange”,并加载21which, %in%和match函数的应用A1=matrix(rep(0),5,5);A11,2=1;which(A1=1);#注意是“=”which(A10);which(A10)=NA;m - matrix(c(1,2,4,2, 3,5,4,9), ncol = 2) ;M=cbind(m,m);which(M = c(2,5),arr.ind=T)#当=后面是向量时使用。match(c(2,3,4,5),m) #2,3,4,5分别首次出现在m中的位置,而2%in%m #返回的值是2是否在m中的逻辑结果。类似的还有is.element函数。unique(y)为y中元素的不同取值22提取某一行,列si - matrix(c(1, 1, 1, 2, 3, 1, 3, 4, 1, 5, 1, 3), ncol = 3, byrow =TRUE)si,2;si2,;sisi,2=1;sisi,2=1,;#注意这里1后面的逗号sisi,2=1,=NA;23练习1如果想看si - matrix(c(1, 1, 1, 2, 3, 1, 3, 4, 1, 5, 1, 3), ncol = 3, byrow =TRUE)中1出现的次数,可以怎么办?2假设e=rnorm(5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出合同合同范例
- 2024年度互联网数据中心运维外包劳务合同范本3篇
- app宣传服务合同范例
- 煤矿回填采购合同范例
- 机械土方施工合同范例
- 养护公司劳务合同范例
- 农村房屋材料合同范例
- 服装批发合伙合同范例
- 聘请园区保安合同范例
- 签全款购买合同范例
- 道德与法治中考备考建议课件
- 财产保险退保申请范文推荐6篇
- 食品工程原理课程设计
- YYT 0325-2022 一次性使用无菌导尿管
- 羊膜在眼科临床中应用课件
- (71)第十五章15.2.3整数指数幂1-负整数指数幂-导学案
- 初步设计方案询价表
- 2022年江苏省环保集团有限公司招聘笔试题库及答案解析
- 《汽车焊接技术》试卷期末理论考试含参考答案一套
- FMEA分析经典案例【范本模板】
- 2023-2023年山东省学业水平考试英语试题及答案
评论
0/150
提交评论