对象类型是R语言组织和管理内部元素的不同方式,主要包括:向量、矩阵、数组、列表、数据框、因子、时间序列。
1 向量
1.1 “:”创建向量
> x=2:7
> x
[1] 2 3 4 5 6 7
说明:“:”创建步长为1的等距数据
1.2 c()创建向量
> x=c(1,14,7,9,20)
> x
[1] 1 14 7 9 20
> y=c('F','M','M','F','M')
> y
[1] "F" "M" "M" "F" "M"
> z=c(1:9,10)
> z
[1] 1 2 3 4 5 6 7 8 9 10
说明:用c()来创建向量,向量内各元素使用逗号分割;可以结合“:”使用。
1.3 seq()创建等距数列向量
> x=seq(3,9,by=2)
> x
[1] 3 5 7 9
> y=seq(3,9,length=3)
> y
[1] 3 6 9
说明:通过by或length来控制间距或序列长度。
1.4 rep()创建重复序列
> x=rep(c(3,5,7),3)
> x
[1] 3 5 7 3 5 7 3 5 7
> y=rep(c(3,7),c(4,2))
> y
[1] 3 3 3 3 7 7
1.5 向量中添加、修改、删除数据
> x=c(3,5,6,8)
> x[2] #选中向量的第2个元素
[1] 5
> x[2]=4 #将向量的第2个元素修改为4
> x
[1] 3 4 6 8
> x=c(x,11)
> x
[1] 3 4 6 8 11 #将11添加到向量末尾
> x=x[-4]
> x
[1] 3 4 6 11 #删除向量的第4个元素
2 矩阵
2.1 matrix()创建矩阵
> x=matrix(data=5, nr=2, nc=3)
> x
[,1] [,2] [,3]
[1,] 5 5 5
[2,] 5 5 5
> y=matrix(data=c(1:6), nr=2, nc=3)
> y
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> z=matrix(data=c(1:6), nr=2, nc=3,byrow=TRUE)
> z
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
2.2 cbind()和rbind()创建矩阵
> x=cbind(c(1,1,1),c(2,2,2))
> x
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
> y=rbind(c(3,3,3),c(4,4,4))
> y
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 4 4 4
2.3 diag()创建对角矩阵
> x=diag(3)
> x
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
> y=diag(1:3)
> y
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 2 0
[3,] 0 0 3
2.4 获取矩阵的行、列长度和元素总量
> x=matrix(data=5, nr=2, nc=3)
> dim(x)
[1] 2 3
> nrow(x)
[1] 2
> ncol(x)
[1] 3
> length(x)
[1] 6
2.5 获取矩阵内的元素
> x=matrix(data=c(1:6), nr=2, nc=3)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x[,2]
[1] 3 4
> x[1,]
[1] 1 3 5
> x[2,3]
[1] 6
3 数组
3.1 array()创建数组
> x=array(1:10) #一维数组相当于向量
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y=array(1:10, dim=c(2,5)) #二维数组相当于矩阵
> y
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> z=array(1:24, dim=c(3,4,2)) #高维数组
> z
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
4 数据框
4.1 data.frame()创建数据框
> df=data.frame(y=c(1:4), x1=c('F','M'),x2=2021)
> df
y x1 x2
1 1 F 2021
2 2 M 2021
3 3 F 2021
4 4 M 2021
4.2 矩阵转化为数据框
> x=matrix(data=c(1:6), nr=2, nc=3)
> df=as.data.frame(x)
> df
V1 V2 V3
1 1 3 5
2 2 4 6
> colnames(df)=c('y','x1','x2')
> df
y x1 x2
1 1 3 5
2 2 4 6
> rownames(df)=c('a','b')
> df
y x1 x2
a 1 3 5
b 2 4 6
4.3 获取数据框中的元素
> df=data.frame(y=c(1:4), x1=c('F','M'),x2=2021)
> df
y x1 x2
1 1 F 2021
2 2 M 2021
3 3 F 2021
4 4 M 2021
> df$x1
[1] "F" "M" "F" "M"
> df[,2]
[1] "F" "M" "F" "M"
> df[3,]
y x1 x2
3 3 F 2021
> df[3,2]
[1] "F"
5 列表
5.1 list()创建列表
> x=list(c(1,3),c('a','d'))
> x
[[1]]
[1] 1 3
[[2]]
[1] "a" "d"
> x=list(A=c(1,3),B=c('a','d'))
> x
$A
[1] 1 3
$B
[1] "a" "d"
5.2 将矩阵、数据框放入列表,并获取元素
> df=data.frame(y=c(1:4), x1=c('F','M'),x2=2021)
> mat=matrix(data=c(1:6), nr=2, nc=3)
> list=list(c(1,3,4),x1=df,x2=mat)
> list
[[1]]
[1] 1 3 4
$x1
y x1 x2
1 1 F 2021
2 2 M 2021
3 3 F 2021
4 4 M 2021
$x2
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> list[[1]]
[1] 1 3 4
> list[["x1"]]
y x1 x2
1 1 F 2021
2 2 M 2021
3 3 F 2021
4 4 M 2021
> list[["x1"]]$x1
[1] "F" "M" "F" "M"
> list[["x2"]][2,2]
[1] 4
6 因子
因子不仅包括分类变量本身还包括变量不同的可能水平。
6.1 factor()创建因子
> x=factor(2:4, levels=1:5)
> x
[1] 2 3 4
Levels: 1 2 3 4 5
> y=factor(2:4,levels=1:5, labels=c("A", "B", "C", "D", "E"))
> y
[1] B C D
Levels: A B C D E
6.2 levels()提取因子的水平
> x=factor(2:4, levels=1:5)
> levels(x)
[1] "1" "2" "3" "4" "5"
7 时间序列
7.1 ts()创建时间序列
> time1=ts(1:20, start = 2000) #创建年度数据
> time1
Time Series:
Start = 2000
End = 2019
Frequency = 1
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> time2=ts(1:24, frequency = 12, start = c(2000, 6)) #创建月份数据
> time2
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2000 1 2 3 4 5 6 7
2001 8 9 10 11 12 13 14 15 16 17 18 19
2002 20 21 22 23 24
> time3=ts(1:10, frequency = 4, start = c(2000, 2)) #创建季度数据
> time3
Qtr1 Qtr2 Qtr3 Qtr4
2000 1 2 3
2001 4 5 6 7
2002 8 9 10
> time4=ts(matrix(c(1:36), 12, 3), start=c(2020, 1), frequency=12) #创建多元时间序列
> time4
Series 1 Series 2 Series 3
Jan 2020 1 13 25
Feb 2020 2 14 26
Mar 2020 3 15 27
Apr 2020 4 16 28
May 2020 5 17 29
Jun 2020 6 18 30
Jul 2020 7 19 31
Aug 2020 8 20 32
Sep 2020 9 21 33
Oct 2020 10 22 34
Nov 2020 11 23 35
Dec 2020 12 24 36