对象类型

Reads: 2102 Edit

对象类型是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

Comments

Make a comment