R语言数据构造_第1页
R语言数据构造_第2页
R语言数据构造_第3页
R语言数据构造_第4页
R语言数据构造_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

R语言数据构造向量,矩阵向量和赋值x<-c(10.4,5.6,3.1,6.4,21.7)x=c(10.4,5.6,3.1,6.4,21.7)assign("x",c(10.4,5.6,3.1,6.4,21.7))c(10.4,5.6,3.1,6.4,21.7)->x

定义向量x,但是不显示结果,用print(x)或者直接输入x来显示x的具体值。1.变量名可由字母数字和点号构成,但是注意名称不能以数字开始,数字后不能紧跟点号,点号开头的变量名是特殊的,尽量避免。变量名区分大小写,X和x表示不同的变量。例如可使用变量名height.lyr来表示一岁儿童的身高。2.有些变量名已经被系统使用,比如diff,df,pt等,再如c,q,t,C,D,F,I,T等,如果重新定义可能将其失去原意引起混淆。向量运算1/x直接显示运算结果y=1/x定义新的向量但是不显示结果y=c(x,0,x)#维数为11,#为注释,可放在语句后,用#隔开向量可以被用于算术表达式中,操作是按照向量中的元素一个一个进行的。同一个表达式中的向量并不需要具有相同的长度(可以运算,但是会有警告,最好不要这样)。如果它们的长度不同,表达式的结果是一个与表达式中最长向量有相同长度的向量。表达式中较短的向量会根据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹配。而常数很明显的将被不断重复。所以在上面的赋值前提下命令v<-2*x+y+1产生一个长度为11的新向量v,逐个元素的进行运算,其中2*x被重复2.2次,y被重复1次,常数1被重复11次。逐个元素(如果牵扯到矩阵运算需要特别注意)进行运算的操作符包括+,-,*,/,^,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中所有元素的乘积。两个统计函数是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))。如果var()的参数是一个n*p的矩阵,那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向量。mean()同理。sort(x)返回一个与x具有相同长度的向量,其中的元素按升序排列。还有其他更灵活的排序功能(参见order()和sort.list())order(y)y[order(y)]y[order(y,decreasing=T,na.last=T)]。平行的最大最小函数pmax和pmin将返回一个与最长的向量长度相等的向量,向量中的元素由参数中所有向量在相应位置的最大值(最小值)组成。x<-sort(rnorm(100));cH<-1.35pmin(cH,quantile(x));pmin(quantile(x),cH)如果要使用复数,需要直接给出一个复数部分。因此sqrt(-17)将会返回NaN(无效数值)和一个警告,而sqrt(-17+0i)将按照复数进行运算。向量命名和字符向量x=c(red=1,blue=2,green=3);names(x);y=c(FALSE,"abc");z=c(pi,"FALSE")生成向量的命令seq(0,10,2);#三个参数依次是向量元素取值的最小值,最大值和间距seq(1,5,2)seq(1,5,3)rep(1,5)#把1重复5次rep(1:2,5)rep(1:2,c(2,3))rep(1:2,each=10);rep(1:2,c(10,10))#两者相等rep(x,5)矩阵和数组x=1:12;dim(x)=c(3,4);

#注意3*4=12,必须匹配X=matrix(1:12,3,4)#1:12为元素,3,4为行数和列数X=matrix(2:13,nrow=3,byrow=TRUE)#按行排列元素X=matrix(2:13,nrow=3,byrow=F)#按列排列元素X=matrix(x,3,4)rownames(X)=LETTERS[1:3]#行命名colnames(X)=c(“red”,“green”,“rose”,“blue”)#列命名x1=matrix(1:5,5,1);x2=matrix(6:10,5,1)X1=cbind(x1,x2);#列结合X2=rbind(t(x1),t(x2));#行结合矩阵转置t(x)

#转置命令若将函数t()作用于一个向量x,则R默认x为列向量,返回结果为一个行向量

x=1:10

t(x)#则返回

[,1][,2][,3][,4][,5][,6][,7][,8][,9][,10]

[1,]

1

2

3

4

5

6

7

8

9

10所以列向量可以由t(t(x))得到。>class(x)

[1]"integer"

>class(t(x))

[1]"matrix"

矩阵四则运算在R中对同行同列矩阵相加减,可用符号:“+”、“-”,例如:

A=B=matrix(1:12,nrow=3,ncol=4)A+BA-BA*B#对应元素直接相乘(矩阵的Hadamard积),不是矩阵相乘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.A=matrix(1:12,nrow=4,ncol=3)

B=matrix(1:12,nrow=4,ncol=3)

要得到A'B,可用函数crossprod()

该函数计算结果与t(A)%*%B相同,但是效率更高

与对角线有关的运算例如要取一个方阵的对角元素,

A=matrix(1:16,nrow=4,ncol=4)

diag(A)

diag(diag(A))#构建对角矩阵。diag(3)#对一个正整数z应用diag()函数将产生以z维单位矩阵。

矩阵求逆矩阵求逆可用函数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)%*%A

矩阵的特征根和特征向量矩阵A的谱分解为A=UΛU’,其中Λ是由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)-A矩阵的Choleskey分解对于正定矩阵A,可对其进行Choleskey分解,即:A=P'P,其中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(chol(A));solve(A)

矩阵民奇异形值分嫌解A为m×恨n矩阵庆,ra筑nk各(A坦)=路r搞,可以兔分解担为:A=独UD药V‘纷,其中U’董U=头V‘落V=两I。在R中可奇以用裁函数sc颈d(拦)进行扇奇异马值分股解,粮例如掀:A=有ma毒tr砖ix只(1括:1练8,和3,诞6);sv金d(摩A)A.掉sv诊d=晌sv爷d(奔A)A.阻sv垦d$赢u%*站%d落ia阿g(晋A.剑sv障d$夜d)窗%*贿%t丈(A芝.s宝vd汉$v)#矩阵At(稠A.呼sv绿d$胁u)队%*粪%A.洲sv铲d$悼u#单位姥矩阵矩阵岩的维叙数在R中很赤容易值得到霉一个拌矩阵任的维漫数,古函数di释m(扛)将返昨回一符个矩壤阵的敲维数湾,nr猾ow攻()返回跑行数辆,nc捡ol铅()返回享列数矩阵先的行典和、腐列和君、行旺平均而与列夸平均在R中很眨容易禽求得矩一个极矩阵钩的各盲行的矛和、早平均脑数与挽列的轿和、仰平均贡数,宇例如:ro朋wS月um绳s(温A);ro燃wM互ea烧ns担(A音);co棍lS鼓um洋s(轨A);co首lM苦ea魔ns筋(A)上述乎关于嫌矩阵涂行和罗列的惠操作泼,还终可以腊使用ap拢pl职y(锻)函数宴实现满。ap昨pl作y(己X,钥M遥AR弃GI培N,绍F邪UN绍,布..餐.)其中腹:x为矩泻阵,MA摇RG敲IN用来省指定卡是对档行运杯算还独是对胜列运邮算,MA径RG壳IN=1表示粮对行溪运算油,MA树RG出IN=2表示卖对列箩运算怒,FU质N用来码指定向运算辆函数,牌..蕉.用来漫给定FU凳N中需彻要的谨其它吩的参西数,团例如泡:ap裙pl铜y(关A,宇1,得su灭m)洗;管ap喝pl扁y(警A,桶1,蚁me链an盯)兰ap灰pl搅y(宵A,旗2,聚su伟m)便;鲜ap胳pl象y(酒A,围2,饱me苦an昨)夸a丸pp非ly键()函数圈功能稍强大狼,我帽们可飞以对抹矩阵乡丰的行给或者啊列进筑行其执它运鞠算,横例如晨:计算甚每一觉列的绢方差A=推di该ag紫(r今ep演(1溉,5洋))他;ap输pl山y(聋A,康2,批va屡r)京;农a勤pp燃ly从(A膊,2匪,f毒un滤ct公io简n(歉x,深a)摧x*革a,羞a=斥2)注意所:ap宇pl呢y(漠A,灯2,捞fu弄nc起ti谢on冒(x涨,a息)x卸*a震,a挽=2抚)与A*蛋2效果纳相同创,此铲处旨回在说洒明如窑何应网用al鞭pp疑ly函数刮。取矩倘阵的哲行或抛列的拉下标在R中定册义了既的这首两个红函数拳用于炕取矩陕阵元声素的们行或殊列下腾标矩醒阵,棍例如迎矩阵A=穿{a嚼ij竿}m芦×n,ro推w(汽)函数干将返往回一拥个与破矩阵A有相绞同维妖数的滋矩阵费,该灰矩阵栏的第i行第j列元寺素为i,函裕数co执l(益)类似。例如康:x=目ma功tr蚁ix排(1银:1感2,腰3,昨4)ro纽奉w(脖x)col倾(x犹)取矩嘱阵的滨上下剥三角搭部分函数lo轰we串r.橡tr再i(冷)和函图数up纠pe扫r.焦tr猎i()可以闻很方提便的坟取到扁一个贩矩阵赢的上位、下佛三角吨部分元妻素的逻霜辑判得断值。用法阵如,x[眉up肤pe币r.眼tr把i(匪x)毯]=0尚#把上帮三角殖变成0.矩阵X'也X的逆在统杜计计智算中新,我清们常霉常需述要计蹄算这苹样矩梢阵的蜡逆,乱如OL篮S估计忙中求形系数侮矩阵往。R中的川包“s柜tr愿uc嚷ch冬an厘ge避”提供加了有稻效的结计算蹲方法切。ar肆gs锯(s工ol问ve煎Cr供os生sp企ro币d)嘱fu曲nc绞ti货on粘(鸡X,捧m阴et芝ho谨d符=衫c(“联qr举”,吹“索ch筋ol斤”,牛“柜so爆lv妻e”蒙))其中拢:me面th去od指定桥求逆午方法蠢,选喘用“qr”效率霞最高娃,选隆用“ch看ol”精度霉最高海,选唐用“sl木ov厨e”与sl以ov放e(怪cr摇os冤sp处ro夹d(私x,骆x)质)效果心相同遇,例诉如:A=越ma债tr义ix大(r籍no敌rm积(1迟6)寒,4炕,4)so朋lv鸡eC索ro奴ss遮pr压od及(A岭,m盲et羽ho是d="寻qr")#首先尺安装盖包“s应tr盲uc垮ch迟an躲ge醉”,并加济载wh咏ic新h,%i疗n%和ma奶tc吹h函数锦的应锐用A1岩=m伤at著ri猾x(爱re铃p(悲0)肚,5杰,5);A1辫[1鼠,2货]=肠1;wh增ic特h(持A1没==哪1)毛;#注意漂是“==”wh聚ic盲h(掏A1哭>0恨);wh批ic闯h(艰A1宽<=子0)掩;A1芽[w雀hi扎ch但(A仰1>乡丰0)糖]=犬NA随;m浇<-烦m险at则ri离x(锄c(堆1,草2,洽4,尝2,焰3盘,5归,4桂,9喝),乌n仿co革l留=何2);M=流cb柱in酸d(殖m,用m)菊;wh茎ic们h(设M赴==c(持2,技5)挎,ar精r.粪in善d=灶T)#当==后面凑是向笼量时伐使用掩。mat础ch(c屠(2绑,3绸,4悲,5韵),m)#2纠,3翻,4叹,5分别饼首次葡出现负在m中的均位置址,而2%锁in炒%m仆#返回纽奉的值报是2是否较在m中的绿逻辑守结果赠。类似液的还脚有is徐.e励le启me这nt函数。un睡iq桶ue戴(y速)为y中元滴素的蹲不同洒取值提取穴某一味行,涝列si赚<派-案ma事tr介ix殊(c猫(1妈,嫩1,炭1小,喇2,讯3透,附1,取3恰,暖4,剩1拘,别5,悄1锋,绘3)柏,耳nc梢ol雄=览3惰,烟by估ro指w=TR蕉UE铺)si银[,剂2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论