-----R对象和数据组织---------------
2016-7-31
2016/09/03 10:38
R的数据对象:
---存储角度:数值型,字符型,逻辑型
---结构角度:
向量(具有相同存储类型数据的集合)
矩阵(列:变量,行:观测)--二维表格
数组(多张二维表的集合)
数据框(与矩阵类似,用于存储多个存储类型不同的变量)
列表:向量、矩阵、数组、数据框的集合
-----------------------------------------------------------------
创建和访问R的数据对象
---(1)创建R的数据对象:对象名
<-R常量或R函数
--- (2)访问R的数据对象:
对象名或print(对象名)
----(3)查看R的数据对象的结构:
str(对象名)
-----(4)管理R的数据对象:
ls():显示当前工作区间的变量名列表
------
-rm(对象名或对象名列表),remove(对象名):删除当前工作区间的指定对象。
-----------------------------------------------------------------------
调用R的向量组织数据
判断数据对象是否为向量:
is.vector(数据对象名)
创建只包含一个元素的向量:标量
------对象名<-R常量
-----
(V4<-TRUE),幅值语句直接放入括号内,表示创建对象,并直接显示对象值
-----
#开头的程序行为注释
创建包含多个元素的向量
---包含多个元素的目的是:保存一个变量到R中。
----对象名<-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
> (vehiclegroup<-rep(10: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
> a
[1]<-1
> a
[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
-----利用位置向量访问指定位置上的元素
利用逻辑型位置向量访问指定位置上的元素,a[b],
b的长度不够a的长度时,按b 先前的顺序取值
-------访问指定元素之外的元素
向量名[-位置常量];访问除第几个元素以外的元素
向量名[-位置常量1:位置常量2]
向量名[-c(5:9),10]
向量名[-位置向量名]
用R的矩阵组织数据,
可通过is函数判断数据对象是否为矩阵。
is.matrix(数据对象名)
2016/09/03 14:07
由向量创建矩阵:
cbind(向量名列表
):各向量存储类型一致
ClaimData<
-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
创建数据框
ChaimDataFrm<-
data.frame(域名1=向量名1,域名2=向量名2,。。。)
创建数据表时,数据框中是空的,通过:numeric(0)创建一个不包含任何数据的数值型的域。
访问数据框
(1)矩阵方式访问
(2)数据框名$域名
数据框名[["域名"]]
数据框名[[域编号]]
还可:
attach(数据框名)
访问域名函数1
访问域名函数2
detach(数据框名)
还可:
with(数据框名,{
with(数据框名,{
域访问函数1
域访问函数2
}
)
with内为局部环境,类似C语言里的局部变量。
若修改数据框中的值或增加新的域,需采用within函数
数据框名<-within(数据框名,{
域访问函数
域修改函数
})
在{ }内生成的新向量均默认加入数据框,成为新的域。
2016/09/04 14:08
----------------------------------------------------------------------------------------------------------------------------------------------