-----R对象和数据组织---------------


2016-7-31


2016/09/03 10:38


R的数据对象:


---存储角度:数值型,字符型,逻辑型


向量(具有相同存储类型数据的集合)


矩阵(列:变量,行:观测)--二维表格


数组(多张二维表的集合)


数据框(与矩阵类似,用于存储多个存储类型不同的变量)


列表:向量、矩阵、数组、数据框的集合


-----------------------------------------------------------------


创建和访问R的数据对象


<-R常量或R函数


对象名或print(对象名)


str(对象名)


ls():显示当前工作区间的变量名列表


-rm(对象名或对象名列表),remove(对象名):删除当前工作区间的指定对象。


-----------------------------------------------------------------------


调用R的向量组织数据


is.vector(数据对象名)


创建只包含一个元素的向量:标量


------对象名<-R常量


(V4<-TRUE),幅值语句直接放入括号内,表示创建对象,并直接显示对象值


#开头的程序行为注释



创建包含多个元素的向量


----对象名<-R函数


最常用的R函数是C函数,seq,rep,


> holderage<-c(22,22,23,23)


> length(holderage)



[1] 4



> vehiclegroup<-rep("A",each=4)



> vehiclegroup



[1] "A" "A" "A" "A"



> vehiclleage<-seq(from=1,to=4,by=1)



> vehiclleage



[1] 1 2 3 4



> claimamt<-c(2312,2256,1064,1280)



> claimamt



[1] 2312 2256 1064 1280



> nclaims<-c(8,8,4,1)



> nclaims



[1] 8 8 4 1



> str(vehiclegroup)



 chr [1:4] "A" "A" "A" "



向量相同,可以使用赋值语句,向量元素相同,可借助重复函数和序列函数简化书写



rep重复函数


rep(起始值:终止值,each=重复次数)或times=重复次数


vehiclegroup<-rep(10:15,times=4))



 [1] 10 11 12 13 14 15 10 11 12 13 14 15 10 11 12 13 14 15 10 11 12 13 14 15



each=4))



 [1] 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 14 15 15 15 15




seq序列函数


seq(from=起始值,to =终止值,by=步长)


    seq(from=起始值,to =终止值,by=个数)   


scan键盘数据读入函数


          R支持从键盘输入一组数据到指定向量中,函数书写:


scan()


Ctrl+回车键表示结束输入。


Vector创建向量函数


vector(length=元素个数),创建的初值默认为FALSE,需通过向量元素访问,给各元素赋予具体值


 vector(length=5)



[1] FALSE FALSE FALSE FALSE FALSE




访问向量中为元素


-----访问指定位置上的元素:


> a<-vector(length=10)



> a



 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE



[1]<-1



[2:4]<-c(2,3,4)



> a



 [1] 1 2 3 4 0 0 0 0 0 0



> b<-seq(from=5,to=9,by=1)



> b



[1] 5 6 7 8 9



> a[5:9,10]<-c(b,10)



Error in a[5:9, 10] <- c(b, 10) : 矩阵里的下标数目不对



> a



 [1] 1 2 3 4 0 0 0 0 0 0



a[c(5:9,10)]<-c(b,10)



> a



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






-----利用位置向量访问指定位置上的元素





b的长度不够a的长度时,按b 先前的顺序取值



-------访问指定元素之外的元素


向量名[-位置常量];访问除第几个元素以外的元素


向量名[-位置常量1:位置常量2]


向量名[-c(5:9),10]


向量名[-位置向量名]






用R的矩阵组织数据,



可通过is函数判断数据对象是否为矩阵。



is.matrix(数据对象名)



2016/09/03 14:07



由向量创建矩阵:



cbind(向量名列表 ):各向量存储类型一致



-cbind(holderage,vehiclege,claimamt,nclaims)








dim(矩阵名):显示矩阵行列数






colnames (ClaimData)  : 显示矩阵各列名称



colnames(ClaimData [,2:4])  显示矩阵指定列名称





rownames(ClaimData)<-c("1","2","3","4"),给矩阵各行命名



显示指定行名称:rownames(Claimdata[c(1,3),])





rbind(a,b)  行合并函数





------------由单个向量派生矩阵



矩阵中的元素已存在于一个向量中



matrix(向量名,nrow=行数,ncol=列数,byrow=TRUE/FALSE,...)



a<-matrix(a,nrow=5,ncol=6,byrow=FALSE,dilnames=list(dim1,dim2));



---------访问矩阵中的元素:



1)访问指定位置上的元素



矩阵名[行位置常量,列位置常量]



矩阵名[c(1,2),c(1,3)]





2)访问指定行上的所有元素



head(矩阵名,n)



tail(矩阵名,n)



3)访问指定列上的所有元素






4)利用编辑窗口访问矩阵元素



fix(矩阵名)



2016/09/04 13:24



---------------------------------------------------------------------------------------------------------------------------------------


数据框用于存储多个存储类型不尽相同的变量;



      统计                计算机



行:观测----------记录



变量---------- 域






判断数据对象是否为数据框



is.data.frame(数据对象名)  TRUE?FALSE





创建数据框



data.frame(域名1=向量名1,域名2=向量名2,。。。)



创建数据表时,数据框中是空的,通过:numeric(0)创建一个不包含任何数据的数值型的域。





访问数据框



(1)矩阵方式访问



(2)数据框名$域名



        数据框名[["域名"]]



        数据框名[[域编号]]



还可:



        attach(数据框名)



        访问域名函数1



        访问域名函数2



        detach(数据框名)



还可:
    with(数据框名,{



            域访问函数1



            域访问函数2





with内为局部环境,类似C语言里的局部变量。



若修改数据框中的值或增加新的域,需采用within函数



数据框名<-within(数据框名,{



                        域访问函数



                        域修改函数



                                })



在{ }内生成的新向量均默认加入数据框,成为新的域。



2016/09/04 14:08