数据结构(部分内容)

2023-03-08 22:51:26 浏览数 (1)

有哪些数据结构

元素:单一一个数据

向量:一系列数据的合集,一个向量中只能含有一种数据类型。

数据框:多组向量组合成的列表形式,一列为一个向量,每一列之间的数据类型可以不同。

向量

函数c(),括号里是向量中的元素

代码语言:txt复制
c(1,2,3,4,4,7,4)
c('a','asd','x')

在向量中放入大量连续数字可用:

代码语言:txt复制
a <- c(1:20)
---------
> a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12
[13] 13 14 15 16 17 18 19 20

生成重复元素可用rep()

代码语言:txt复制
> b <- rep("x",times = 10)
> b
 [1] "x" "x" "x" "x" "x" "x" "x" "x" "x"
[10] "x"

生成有规律的一系列数据seq()

代码语言:txt复制
> c <-seq(from =1,to =20,by=3)  #from为起始数,to为截止数,by为步长
> c
[1]  1  4  7 10 13 16 19

生成随机数rnorm()

代码语言:txt复制
> rnorm(5) #括号中的数字代表生成多少个随机数
[1] -0.4294591  0.7380404  1.4849288
[4] -0.4250045 -0.8248760

向量组合

paste0()paste()

代码语言:txt复制
> paste0(rep('x',times=3),c(1:3))
[1] "x1" "x2" "x3"
> paste(rep('x',times=3),c(1:3))
[1] "x 1" "x 2" "x 3"

paste0()和paste()的区别为,paste()函数中有一个参数为sep=" ",意为以空格为间隔组合(默认)。而paste0()是无缝组合。

paste0函数中,逗号前的rep('x',times=3)会生成三个x的向量,逗号后的c(1:3)会生成一个1到3的向量,paste0函数的作用就是将这两个向量已平行的方式组合在一起

x

x

x

1

2

3

循环补齐

如果逗号前后的向量中的元素数量不一致,短的向量会进行循环补齐

代码语言:txt复制
> paste0(rep('x',times=3),c(1:5))
[1] "x1" "x2" "x3" "x4" "x5"
> paste0(rep('x',times=8),c(1:3))
[1] "x1" "x2" "x3" "x1" "x2" "x3" "x1"
[8] "x2"

第一个代码产生的效果为:

x

x

x

x

x

1

2

3

4

5

第二个代码产生的效果为:

x

x

x

x

x

x

x

x

1

2

3

1

2

3

1

2

交集、并集、差集

交集:intersect()

代码语言:txt复制
> x <- c(1,2,5,6,3)
> y <- c(2,8,4,9,5)
> intersect(x,y)
[1] 2 5

并集:union()

代码语言:txt复制
> x <- c(1,2,5,6,3)
> y <- c(2,8,4,9,5)
> intersect(x,y)
[1] 2 5
> union(x,y)
[1] 1 2 5 6 3 8 4 9

差集:setdiff()

代码语言:txt复制
> x <- c(1,2,5,6,3)
> y <- c(2,8,4,9,5)
> intersect(x,y)
[1] 2 5
> union(x,y)
[1] 1 2 5 6 3 8 4 9
> setdiff(x,y)  #x中与y不同的元素
[1] 1 6 3
> setdiff(y,x)  #y中与x不同的元素
[1] 8 4 9

%in%

代码语言:txt复制
> x <- c(1,2,5,6,3)
> y <- c(2,8,4,9,5)
> x %in% y  #x中的每一个元素在y中是否存在
[1] FALSE  TRUE  TRUE FALSE FALSE
> y %in% x  #y中的每一个元素在x中是否存在
[1]  TRUE FALSE FALSE FALSE  TRUE

%in%是一种遍历的比较,比如说x%in%y,是x中的每一个元素依次对y中的所有元素比较一遍;y%in%x同理,是y中的每一个元素依次对x中的所有元素比较一遍.

0 人点赞