您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > R语言学习系列03-数据结构I—向量-矩阵-多维数组
03.数据结构I—向量,矩阵,多维数组一、向量(一维数据)向量是R语言中最基本的数据类型,是以一维数组管理数据的一种对象类型,可以是数值型、字符型、逻辑值型、复数型。注意:同一向量不能混杂多种不同类型的数据。1.创建向量通过函数c()实现组合功能,例如x1-c(2,3,5,7,10)x1[1]235710x2-c(a,b,c)x2[1]abc2.向量索引(1)下标索引(注意:R中下标是从1开始的),例如x1[1]——返回x1的第1个元素x1[-1]——返回除第一个元素之外的所有元素x1[c(2:4)]——返回x1的第2至4个元素x1[-c(2:4)]——返回x1的除第2至4元素之外的所有元素(2)名称索引先给向量中的每个元素命名,再通过名称访问对应的元素:names(x1)-c(two,three,five,seven,ten)x1[c(three,seven)]threeseven37(3)which元素位置通过函数which()返回逻辑向量中为TRUE的位置;which.max(x1)返回向量x1中最大值所在的位置;which.min(x1)返回向量x1中最小值所在的位置。x1-c(2,3,5,7,10)x1[which(x13&x18)][1]57x1[which.max(x1)][1]10(4)subset生成子集检索向量中满足条件的元素,提取出来:subset(x1,x13&x18)[1]57(5)match匹配match(x1,x2)逐个检查向量x1中元素是否在向量x2中,若是则返回该元素,否则返回NA:x1-c(2,3,5,7,10)x2=1:4match(x1,x2)[1]23NANANA(6)%in%检查是否属于x1%in%x2逐个判断向量x1中元素是否属于向量x2:x1%in%x2[1]TRUETRUEFALSEFALSEFALSE3.向量的编辑对已创建向量进行增加或删除元素。(1)增加元素x-1:5x[1]12345x-c(x,c(6,7,8))x[1]12345678x[10]=10x[1]12345678NA10length(x)[1]10(2)删除元素x=1:8x[1]12345678x-x[-c(3,5)]x[1]124678x-x[-1]x[1]246784.向量排序函数sort(),基本格式:sort(x,decreasing=FALSE,na.last=FALSE,...)其中,x为排序对象(数值型或字符型);decreasing默认为FALSE即升序,TURE为降序;na.last默认为FALSE,若为TRUE,则将向量中的NA值放到序列末尾。函数rank(),返回值是该向量中对应元素的“排名”。函数order(),返回值是对应“排名”的元素所在向量中的位置,例如,x-c(1,5,8,2,9,7,4)x[1]1582974order(x)[1]1472635说明:默认按升序,排名第2的元素在原向量的第4个位置。函数rev(),将序列进行反转,即1,2,3变成3,2,15.创建等差序列函数seq(),基本格式为:seq(from=...,to=...,by=...,length.out=...,along.with=...)其中,from设置首项(默认为1);to设置尾项;by设置等差值(默认为1或-1);length.out设置序列长度;along.with以该参数的长度作为序列长度。根据需要设置某几个参数即可,seq(17)同seq(1,17)同1:176.创建重复序列函数rep(),基本格式为:rep(x,times=...,length.out=...,each=...)其中,x为要重复的序列;times设置序列重复次数;length.out设置产生的序列的长度;each设置每个元素分别重复的次数(默认为1)。x=1:3x[1]123rep(x,2)[1]123123rep(x,each=2)[1]112233rep(x,c(2,1,2))#按照规则重复序列中的各元素[1]11233rep(x,each=2,length.out=4)[1]1122rep(x,each=2,times=3)[1]112233112233112233二、矩阵(二维数据)矩阵是二维数组,可以描述二维数据,也要求矩阵内各元素有相同的类型。1.创建矩阵函数matrix(),基本格式为:matrix(x,nrow=...,ncol=...,byrow=...,dimnames=...)其中,x为数据向量作为矩阵的元素;nrow设定行数;ncol设定列数;byrow设置是否按行填充,默认为FALSE(按列填充);dimnames用字符型向量表示矩阵的行名和列名。x-1:6x[1]123456a-matrix(x,nrow=3,ncol=2,byrow=T)a[,1][,2][1,]12[2,]34[3,]56b-matrix(x)b[,1][1,]1[2,]2[3,]3[4,]4[5,]5[6,]6dim(b)=c(3,2)b[,1][,2][1,]14[2,]25[3,]36c-matrix(x,nrow=3,ncol=2,byrow=F,dimnames=list(c(r1,r2,r3),c(c1,c2)))cc1c2r114r224r336函数as.vector(),可将矩阵转化为向量,元素按列读取。as.vector(c)[1]1234562.矩阵索引a[i,j]——返回矩阵a的第i行,第j列的元素a[i,]——返回矩阵a的第i行a[,j]——返回矩阵a的第j列a[c(i:j),]——返回矩阵a的第i至第j行a[,j]——返回矩阵a的第i行,第j列的元素也可按名称索引:c[r2,c1]——返回矩阵c的第r2行,第c1列的元素23.矩阵的编辑函数rbind(A,B),纵向合并(增加行),要求列数相同;函数cbind(C,D),衡向合并(增加列),要求行数相同。注意:rbind(A,1)相当于给矩阵A增加一行“1”。a[-1,],删除矩阵a的第一行a[,-1],删除矩阵a的第一列a[-c(2:4),],删除矩阵a的第2至4行4.矩阵的运算+-*/——四则运算(要求矩阵维数相同)colSums()——对矩阵的各列求和rowSums()——对矩阵的各行求和colMeans()——对矩阵的各列求均值rowMeans()——对矩阵的各行求均值t()——对矩阵转置det()——返回方阵的行列式crossprod()——返回两个矩阵的内积outer()——返回矩阵的外积(叉积)%*%——矩阵乘法(要求左阵的列数=右阵的行数)diag()——取矩阵对角线元素生成对角矩阵,若对象是向量,则以该向量作为对角元素solve()——返回逆矩阵(要求矩阵可逆)eigen()——返回矩阵的特征值与特征向量三、多维数组(高维数据)数组与矩阵类似,是矩阵的扩展,维度≥3.也要求数组中各元素有相同的类型。1.创建多维数组函数array(),基本格式为:array(x,dim=...,dimnames=...)其中,x为数据向量作为多维数组的元素;dim设置多维数组各维度的维数;dimnames设置多维数组各维度的名称。x-1:30dim1-c(A1,A2,A3)dim2-c(B1,B2,B3,B4,B5)dim3-c(C1,C2)a-array(x,dim=c(3,5,2),dimnames=list(dim1,dim2,dim3))a,,C1B1B2B3B4B5A11471013A22581114A33691215,,C2B1B2B3B4B5A11619222528A21720232629A318212427302.多维数组索引第3个维度姑且称为“页”。a[2,4,2]——返回第2页,第2行,第4列的元素26或按各维度名称索引a[A2,B4,C2]——同a[2,4,2]a[,,2]——返回第2页dim(a)——返回多维数组a的各维度的维数352主要参考文献:[1]张良均,谢佳标,杨坦,肖刚.R语言与数据挖掘.机械工业出版社,2016.
本文标题:R语言学习系列03-数据结构I—向量-矩阵-多维数组
链接地址:https://www.777doc.com/doc-3887871 .html