R语言数据结构——向量
在R语言里的数据可分为向量、矩阵、数组、数据框、列表;其中我们在数据分析中常用是数据框和列表。他们主要的形式如下图所示:
向量创建
以创建数值型、逻辑型和字符型向量为例,常见的向量的创建方法有如下几种:
一、直接创建
x_1 <- 1:9
x_2 <- TRUE
x_3 <- 'hello'
二、c()函数创建 [常用的创建方式]
x_1 <- c(1,4,7,8,5,5,3)
x_2 <- c('hello','world')
x_3 <- c(TRUE,TRUE,F,F)
三、seq()函数创建
seq()函数详解:
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, …)
参数解释:
from : 向量的起始数字
to : 向量的结束数字
by : 步长,两相邻元素之间的差值
length.out : 向量的长度,元素的个数
along.with : 从这个参数的长度中取长度
x_1 <- seq(1,9,by = 2) # 1 3 5 7 9
x_2 <- seq(1,by = 2,length.out = 5) # 1 3 5 7 9
四、rep() 函数创建
rep(x, …)
rep.int(x, times)
rep_len(x, length.out)
参数解释:
x : 重复的对象
each : x的每一个元素重复的次数
times :x整体重复的次数
length.out : 输出的长度,元素的个数
x_1 <- rep(1:2,3) #1 2 1 2 1 2
x_2 <- rep(c(1,2),c(1,2)) #1 2 2
x_3 <- rep(c(1,2),each=2) #1 1 2 2
x_4 <- rep(c(1,2),each=2,length.out = 3) #1 1 2
x_5 <- rep(c(1,2),each=2,times = 3) #1 1 2 2 1 1 2 2 1 1 2 2
向量元素的索引
下角标索引
R语言的索引下角标从1开始,不存在0的索引。
x_1 <- c(1,1,2,2,3,3)
x_1[3] # 2
x_1[1:3] # 1 1 2
逻辑值索引
在使用逻辑值索引时,TRUE代表保留元素,FALSE代表不保留。
x_1 <- c(1,1,2,2,3,3)
suoyin <- c(T,F,F,T,T,T)
x_1[suoyin] # 1 2 3 3
名字索引
在使用名字索引时必须保证元素有对应的名字。
x_1 <- c(1,1,2,2,3,3)
names(x_1) <- c('one','two','three','four','five','six')
x_1[c('four','six')] # 2 3
which索引
使用which函数计算出的是元素对应的下角标
x_1 <- c(1,1,2,2,3,3)
which(x_1==1) # 1 2
x_1[which(x_1==1)] # 1 1
which(x_1>1 & x_1<3) # 3 4
x_1[which(x_1>1 & x_1<3)] # 2 2
向量的增加
c()函数的增加
与创建向量的方法一样。
x_1 <- c(1,1,2,2,3,3)
x_2 <- c(x_1,c(4,5)) # 1 1 2 2 3 3 4 5
append()函数的使用
append(x, values, after = length(x))
参数解释:
x : 要添加值得对象
values :添加的值
after :在此位置之后添加数值
x_1 <- c(1,1,2,2,3,3)
x_2 <- append(x_1,c(4,5)) # 1 1 2 2 3 3 4 5
x_3 <- append(x_1,8,2) # 1 1 8 2 2 3 3
向量元素的删除
向量元素的删除时使用减号。
x_1 <- c(1,1,2,2,3,3)
x_1[-1] # 1 2 2 3 3
x_1[-c(1:3)] # 2 3 3
向量的排序
sort() 函数的使用
sort(x, decreasing = FALSE, na.last = NA, …)
参数解释:
x :排序对象
decreasing :排序的方式,FALSE代表正序,TRUE代表倒序,默认为F
na.last : 空值的处理,如果为真,则将数据中缺失的值放在最后,如果为 假,则将它们放在前面,如果为NA,则将它们删除
通过计算元素之间的大小,进行排序。
x_1 <- c(1,5,6,7,9,4,3,2,8)
sort(x_1,decreasing = F) #1 2 3 4 5 6 7 8 9
sort(x_1,decreasing = T) #9 8 7 6 5 4 3 2 1
rev() 函数的使用
将向量中的元素顺序颠倒,不加以任何计算。
x_1 <- c(1,5,6,7,9,4,3,2,8)
rev(x_1) #8 2 3 4 9 7 6 5 1