R语言—数据结构(下)
数组
数组(array)与矩阵类似,但是维度可以大于2.形式如下
data <- array(vector,dimensions,dimnames)
其中,vector包含了数组中的数据,dimensions是衣蛾数值型向量,给出了各个维度下标的最大值,dimnames是可选的、各维度名称标签的列表。
创建一个数组
dim1 <-c ("A1","A2")
dim2 <-c ("B1","B2","B3")
dim3 <-c ("C1","C2","C3","C4")
data <-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3)) #创建数组data
data #显示data
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
显而易见,对于数组我们很少用的到,因为它包含的数据类型只能是一种模式。
数据框
数据框可以含有不同的数据类型,是R中最常处理的数据结构。
可通过data.frame()创建;
data <- data.frame(col1,col2,col3)
其中的列向量col1、col2、col3等可为任何类型(字符型、数值型或逻辑型)每一列的名称可由names()函数指定
创建一个数据框
patientID <- c(1,2,3,4)
age <- c(24,35,13,45)
statement <- c("Type1","Type2","Type2","Type1")
status <- c("Poor","Improved","Excellent","Poor")
patientdata <- data.frame(patientID,age,statement,status)
patientdata
patientID age statement status
1 1 24 Type1 Poor
2 2 35 Type2 Improved
3 3 13 Type2 Excellent
4 4 45 Type1 Poor
读取数据框中的元素
patientdata[1:2] #读取第一、二列
patientID age
1 1 24
2 2 35
3 3 13
4 4 45
patientdata[c("age","status")] #读取age、status列
age status
1 24 Poor
2 35 Improved
3 13 Excellent
4 45 Poor
patientdata$statement # $用来选取一个给定数据框中的某个特定变量
[1] Type1 Type2 Type2 Type1
Levels: Type1 Type2
列表
list是R数据类型中最为复杂的一种,可以用下列形式创建
datalist <- list(object1,object2)
其中的对象可以是目前为止讲到的任何结构,还可以为列表中的对象命名
listdata <- list(name1=object1,name2=object2)
创建一个列表
T <- "my first list" #字符串赋值给T
a <- c(1,2,3,4)
b <- matrix(1:10,nrow=5)
c <- c("one","two","three")
listdata <- list(title=T,a,others=b,c) #创建一个列表,并且对对象命名。
listdata #显示数据
$title
[1] "my first list"
[[2]]
[1] 1 2 3 4
$others
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[4]]
[1] "one" "two" "three"