2.1 数据结构
数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量(但不同行业对行和列叫法不同,在R中用观测和变量代表行和列)。
R可以处理的数据类型(模式)包括数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)。
R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。
1. 标量
标量是只含一个元素的向量,用于保存常量。例如例如 f<-3 、 g<-“US” 和 h<-TRUE。
2. 向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量。
a <- c(1, 2, 5, 3, 6, -2, 4) b <- c("one", "two", "three")c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。
访问向量中的元素:在方括号中给定元素所处位置
a <- c("k", "j", "h", "a", "c", "m")a[3][1] "h"a[c(1, 3, 5)][1] "k" "h" "c"a[2:6] #冒号用于生成一个数值序列[1] "j" "h" "a" "c" "m"
3. 矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵。一般格式:
myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns, byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))
vector包含了矩阵的元素
nrow和ncol用以指定行和列的维数
选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充
dimnames包含了可选的、以字符型向量表示的行名和列名
创建一个5×4的矩阵:
y <- matrix(1:20, nrow=5, ncol=4) y [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20
创建一个按行填充的2×2矩阵:
cells <- c(1,26,24,68)rnames <- c("R1", "R2")cnames <- c("C1", "C2")mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames)) mymatrix C1 C2 R1 1 26 R2 24 68
创建一个按列填充的2×2矩阵:
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=FALSE, dimnames=list(rnames, cnames))mymatrix C1 C2R1 1 24R2 26 68
矩阵下标的使用:
x <- matrix(1:10, nrow=2) #创建了一个内容为数字1到10的2×5矩阵x [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10
x[2,] #选择第二行的元素[1] 2 4 6 8 10 x[,2] #选择第二列的元素[1] 3 4 x[1,4] #选择第1行的第4列的元素[1] 7x[1, c(4,5)] #选择第1行的第4和5列的元素[1] 7 94. 数组
数组(array)与矩阵类似,但是维度可以大于2。可通过array函数创建,格式如下:
myarray <- array(vector, dimensions, dimnames)
vector包含了数组中的数据
dimensions是一个数值型向量,给出各个维度下标的最大值
dimnames是可选的、各维度名称标签的列表
创建一个三维(2×3×4)数值型数组:
dim1 <- c("A1", "A2")dim2 <- c("B1", "B2", "B3")dim3 <- c("C1", "C2", "C3", "C4")z <- array(1:24, c(2, 3, 4),