向量的创建
1. 向量的特点:
1)有序:向量的元素有对应的位置(即下标)
,根据向量中元素的下标可以访问特定元素
2)元素类型统一:常用的数值型向量、字符型向量、逻辑型向量(向量中不可混杂不同类型的元素)
注意:单个数值的向量长度为1
2. 向量的创建
# 创建数值型的向量,使用函数c()
num1 <- c(9.1,8.3,7.3)
num1
num2 <-1:10 #创建连续的向量方式
num2
# 创建字符型向量,使用函数c(),用单引号或双引号都可以
char <- c('a','b',"c")
char
# 创建逻辑向量
logit <- c(TRUE,FALSE,T,F)
logit
# 创建一个混合元素的向量
c(1,'a',T) # 输出结果为[1] "1" "a" "TRUE";函数会默认将其他类型的元素都转换成字符型的元素
# 用函数factor()创建因子型向量
sex <- c('F','M','F','M')
sex
sexf <- factor(sex)
sexf
3. 向量索引/查看
num1[1] # 表示查看向量num1中的第一个元素
num1[c(1,3)] # []中可以写一个向量,表示查看num1中第一个和第三个元素
num1[c(T,F,T)] # []中也可以写逻辑型的向量,T表示要查看的,F表示不查看的
num1[-2] # 负整数表示不想查看的元素位置
# 还可以在索引中输入字符型的向量来对向量元素进行查看,不过前提是这个向量中的元素有对应的名字
num3 <- c('first'=9.1,'second'=8.2,'third'=7.3)
num3
num3[c('first','third')]
举个较为复杂的例子:生成一个20到30的向量,提取其中的偶数
a <- 20:30
a%%2==0 # %%表示取余,== 表示判断恒等于。本条代码的输出结果是逻辑型的向量,可以帮助我们之后做索引,查看偶数
a[a%%2==0]
4. 对向量元素进行修改
# 把num1中的第一个元素改成100
num1
num1[1] <- 100
num1
# 还可以对原始向量中多个元素进行修改值
num1[c(1,3)] <- c(99.9,77)
num1
查看变量的类型
可以在右上角环境处查看变量类型,除此之外可以用class()函数查看
class(num1) # [1] "numeric"
class(char) # [1] "character"
class(logit) # [1] "logical"
class(sexf) # [1] "factor"
向量类型的查看和转换is/as函数的使用
# 查看一个向量是否是字符型的,如果不是就把它转变为字符型的向量
is.character(num1) # [1] FALSE
as.character(num1) # [1] "99.9" "8.3" "77" ,但现在仅仅是一个结果,还并没有把这个结果赋值给num1
num1 <- as.character(num1) # 重新赋值
class(num1) # [1] "character"
is.character(char)
is.character(logit)
logit <- as.character(logit)
is.character(logit)
# 数值型向量判断和转换
is.numeric()
as.numeric()
# 逻辑型向量判断和转换
is.logical()
as.logical()
# 将一个0,1,2的向量转换成逻辑型的向量
as.logical(c(0,1,2)) # [1] FALSE TRUE TRUE,会发现0在转换成逻辑型元素的时候被转换成了FALSE,这是R语言的逻辑
5. R中的特殊值
NA:缺失值
NaN:无意义的数,比如对负数开平方根的时候
Inf:正无穷
-Inf:负无穷
NULL:常常被用在函数的参数中,表示某个参数没有赋值
b <- c(NA,0/1,sqrt(-1),1/0,-1/0)
b # [1] NA 0 NaN Inf -Inf
is.na(b) # 查看向量中是否存在缺失值,返回TRUE表示对应的是缺失值,在R中会同时将NA和NaN都记为缺失值
is.finite(b) # 查看向量中是否是有限值
is.infinite(b) # 查看向量中是否是无穷元素
练习
# 1. 生成向量a,a的元素是1到100的整数
a <- 1:100
# 2.把向量a的第一个元素修改成0
a[1] <- 0
# 3. 删除向量a的前20个元素(提示:可以使用负数索引)
a <- a[c(-1:-20)]
# 4. 生成向量b,b的元素是1到100之内的奇数。(提示:奇数除以2,余数为1)
b <- 1:100
b < b[b%%2==1]
b <- (1:100)[(1:100)%%2==1] # 简化代码
b <- seq(1,100,2)
# 5. 生成向量d,向量d的元素有1,'abc'
d <- c(1,'abc')
# 查看向量d的数据类型
class(d)