vlambda博客
学习文章列表

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"