有哪些数据结构
元素:单一一个数据
向量:一系列数据的合集,一个向量中只能含有一种数据类型。
数据框:多组向量组合成的列表形式,一列为一个向量,每一列之间的数据类型可以不同。
向量
函数c()
,括号里是向量中的元素
c(1,2,3,4,4,7,4)
c('a','asd','x')
在向量中放入大量连续数字可用:
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()
> b <- rep("x",times = 10)
> b
[1] "x" "x" "x" "x" "x" "x" "x" "x" "x"
[10] "x"
生成有规律的一系列数据seq()
> c <-seq(from =1,to =20,by=3) #from为起始数,to为截止数,by为步长
> c
[1] 1 4 7 10 13 16 19
生成随机数rnorm()
> rnorm(5) #括号中的数字代表生成多少个随机数
[1] -0.4294591 0.7380404 1.4849288
[4] -0.4250045 -0.8248760
向量组合
paste0()
和paste()
> 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中的所有元素比较一遍.