第二章 R语言数据结构
R语言存储数据的结构包括:标量、向量、矩阵、数组、数据框和列表;可以处理的数据类型包括:数值型、字符型、逻辑型、复数型和原生型。
数据结构
向量
向量是用来存储数值型、字符型或逻辑型数据的一维数组。单个向量中的数据类型必须一致。
a <- c(1,2,3,4,5,6)
b <- c("one","two","three")
c <- c(TRUE,TRUE,FALSE)
矩阵
矩阵是一个二维数组,每个元素的数据类型一致。
> y <- matrix(1:20,nrow = 4,ncol = 5);
> y
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
数组
数组与矩阵类似,但是维度可以大于2。像矩阵一样,数组中的元素类型也必须一致。
> dim1 <- c("A1","A2");
> dim2 <- c("B1","B2","B3");
> dim3 <- c("C1","C2","C3","C4");
> z <- array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3));
> z
, , 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
数据框
数据框不同的列可以包含不同类型的数据,相对于数组,数据框更加灵活。
> partionId <- c(1,2,3,4);
> age <- c(22,33,45,67);
> diabetes <- c("Type1","Type2","Type1","Type1");
> status <- c("Poor","Good","Excellent","Perfect");
> partionData <- data.frame(partionId,age,diabetes,status);
> partionData
partionId age diabetes status
1 1 22 Type1 Poor
2 2 33 Type2 Good
3 3 45 Type1 Excellent
4 4 67 Type1 Perfect
列表
列表是R语言中数据类型最复杂的一种。
> g <- "My First Class!";
> h <- c(1,2,3,4,5,6);
> j <- matrix(1:10,nrow = 10);
> k <- c("one","two","three");
> mylist <- list(title=g,ages=h,j,k);
> mylist
$title
[1] "My First Class!"
$ages
[1] 1 2 3 4 5 6
[[3]]
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
[[4]]
[1] "one" "two" "three"