向量
a<-c(1,23,4,2)
a[4]
a[2:3]
a[c(1,4)]```
#矩阵
cells<-c(1:4)
rnames <- c("row1","row2")
cnames<- c("col1","col2")
表示按行填充,dimname为行名与列名,分别是向量
mymatrix <- matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
mymatrix
表示按列进行填充
mymatrix1 <- matrix(cells,nrow=2,ncol=2,byrow=FALSE,dimnames=list(rnames,cnames))
mymatrix1
矩阵元素的选择
mymatrix1[1,]
mymatrix1[,2]
mymatrix1[1,2]
mymatrix1[1,c(1,2)]
mymatrix1[1:2]
mymatrix1[,1:2]
矩阵,向量,数组都只能包含一种元素```
数组
dim1<- c("A1","A2")
dim2<- c("B1","B2","B3")
dim3<- c("C1","C2","C3","C4")
#array()函数创建一个数组,第一个参数是值向量,第二个参数是维度最大值向量
#第三个参数是各个维度的标签,可选
z<- array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
z
#所以第一个参数和第二个参数是必须的,第二个参数的维度最大值至少要能容纳下数据
x<-array(1:24,c(3,3,3))
x
#数组中选取元素的方式,构想一下,三维数组的选取方式
z[1,,]
z[1,2,]
z[1,2,3]
z[c(1,2),,]```
#数据框
patientID<-c(1,2,3,4)
age<-c(25,32,43,28)
diabetes<-c("Type1","Type2","Type1","Type1")
status<-c("poor","improved","excellent","poor")
使用data.frame()来创建数据框,其中参数名作为field名字,然后row.names=patientID指定实例标识符
patientdata<-data.frame(patientID,age,diabetes,status,row.names=patientID)
patientdata
使用类似矩阵的方式选取元素
patientdata[1:2]
patientdata[,1:2]
也可以使用列名来选取
patientdata[c("diabetes","status")]
选取一个特定变量,输出一个向量
patientdata$age
生成列变量之间的列联表
table(patientdata$diabetes,patientdata$status)
使用attach()函数,将这个数据框加入到R搜索路径中,就可以直接使用列变量了
attach(patientdata)
summary(age)
plot(age,patientID)
detach(patientdata)
但是如果环境中如果有相应的列变量,就会被掩盖,会造成错误
使用with()函数
with(patientdata,{
summary(age)
plot(age,patientID)
#可以在with之外执行
keeppatient<<-summary(age)
#不能在with之外执行
nokeeppatient<-summary(age)
})
keeppatient
nokeeppatient
{}之间的代码都相对于数据框patientdata执行
创建可以在with()结构外存在的对象<<-```
因子
#名义型变量和有序型变量成为因子
#作为名义型变量因子存在
diabetes<-factor(diabetes)
#有序型变量因子
status<-factor(status,ordered=TRUE)
#由于字符类向量,因子的水平默认值是按字母顺序创建,所以可能不合适,用以下方法改变
status<-factor(status,order-TRUE,levels=("Poor","Improved","Excellent"))
patientID<-c(1,2,3,4)
age<-c(23,32,43,14)
diabetes<-c("type1","type2","type1","type1")
status<-c("poor","excellent","improved","poor")
#一个名义型变量因子
diabetes<-factor(diabetes)
#一个有序型变量因子
status<-factor(status,ordered=TRUE)
petientdata<-data.frame(patientID,age,diabetes,status)
#提供R中某个对象的信息,对象的结构
str(patientdata)
#显示对象的统计概要,会区别对待各个变量
summary(patientdata)```
#列表
一些对象的有序集合
g<-"my first list"
h<-c(23,43,23,54)
j<-matrix(1:10,nrow=5,byrow=TRUE)
k<-c("one","two","three")
name1=g来指定项目名称,list可以包含任何数据类型
mylist<-list(title=g,ages=h,j,k)
mylist
选取元素,使用双重方括号
mylist[[2]]
mylist[["ages"]]```
通过这种方式来选择元素
a<-c(1,2,3,4,5,6,7,8)
a[a%%2==0]
#生成步长为4的向量
seq(1,100,by=4)
#所以按照步长来选取元素可以这样,done!
a[seq(1,8,by=2)]```