在R语言中,向量类似于数学上的集合概念,由一个或多个元素构成。指用于存储数值型、字符型、逻辑型数据的一维数组。
1、向量的创建
# R语言中向量的创建可以通过函数c()x <- c(1,2,3,4,5)
# 存储数值型y <- c("one","two","three")
# 存储字符型,需要加引号,否则会认为是变量或是其他然后进行全局搜索,搜索不到会报错z <- c(TRUE ,T,F)
# 存储逻辑型,可以全称or缩写,不需要加引号,不能首字母大写的格式(会被当成字符串)x0 <- c(1,2,3,"4","5")
# 会输出为字符型,"1","2","3","4","5",因为只有同一类型的数据才能运算
2、等差数列的创建
c(1:100)
# seq(from=1,to=100)
# 建立从1到100的等差数列 seq(from=1,to=100,by=2)
# 从1到100,差值为2seq(from=1,to=100,length.out=10)
# 输出从1到100的十个值
3、重复
rep(2,3)
# 将数值2重复3次rep(x,3)
# 将向量x重复3次,其中,x <- c(1,2,3)
# 输出为 1 2 3 1 2 3 1 2 3rep(x,each=3,times=2)
# 将向量x重复3次,向量中每部分连续重复3次后,再开始重复下一个,上述操作重复两次
# 输出为 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3rep(x,c(1,2,3))
# 将向量x中的各元素按照1次、2次、3次的次数进行重复
# 输出为 1 2 2 3 3 3
4、向量元素
length(x)
# 返回向量x的元素个数x[1]
# 返回向量x的第一个元素,R语言中的第一个元素从1开始,不是从0开始x[-1]
# 返回向量x中的除了第一个元素外的所有元素x[c(4:19)]
# 返回向量x中第四个到第十九个元素x[c(1,1,23,23,49,49,25)]
# 按照输入的元素位置返回向量中的对应元素,可以重复,可以不按顺序
注意:利用索引值时不可以正负同时输入,会产生矛盾
# 可以通过逻辑值对向量元素进行选取
# TRUE可以表示输出这个值,FALSE可以表示不输出
# 假设有数值型向量y <- c(1:10),字符型向量z <- c("one","two","three","four","five")y[c(T,F,T,F,T,F,T,F,T,F)]
# 输出对应位置为T的值:1 3 5 7 9y[c(T)]
# 输出所有值:1 2 3 4 5 6 7 8 9 10y[c(F)]
# 一个值不输出:integer(0),表示没有值y[c(T,F)]
# 按顺序一个输出,一个不输出:1 3 5 7 9y[c(T,T,F)]
# 按顺序,每输出两个,一个不输出:1 2 4 5 7 8 10y[c(T,F,T,F,T,F,T,F,T,F,T)]
# 输入十一个逻辑值,会有缺失值: 1 3 5 7 9 NA,表示第十一个值为缺失值y[y>5 & y<9]
# 输出y的元素值大于5且小于9的元素值:6 7 8"one" %in% z
# 判断向量z中是否有"one"这个元素,有,返回:TRUEz["one" %in% z]
# 由上一个可知,该句等同于z[c(T)],即返回全部:"one" "two" "three" "four" "five" z %in% c("one","two")
# 判断向量z是否在["one","two"]中,只有前两个在,返回:TRUE TRUE FALSE FALSE FALSE
关于向量内元素值也可以进行命名、添加等操作
# 假设有数值型向量y <- c(1:10),字符型向量z <- c("one","two","three","four","five")names(y) <- z
# 为向量y的每个元素命名,返回两行值,第一行是名称,第二行是元素值
# 因为z的元素个数少于y,所以y的后五个元素的第一行为NA表示缺失y <- unname(y)
# 去除命名,y只输出元素值一行y["one"]
# 通过名称返回y中的元素值,返回两行值,第一行是名称,第二行是元素值y[11] <-11
# 给y在第11个元素位添加元素11y[c(11:13)] <- c(11,12,13)
# 给y在第11,12,13个元素位添加元素11,12,13y[20] <-20
# 给y在第20个元素位添加元素20,但是第11到19的元素均为NA,缺失rm(y)
# 删除向量y,再次输入y显示找不到对象'y'append(x = y,values = 99,after = 5)
# 在 向量y 的 第五 元素后添加值为 99 的元素:1 2 3 4 5 99 6 7 8 9 10。
# 若after = 0 则表示在第一位添加y <- y[-c(1:3)]
# 通过重新赋值的方法删除向量y的前三元素,通过新变量进行替换:4 5 6 7 8 9 10
5、向量的运算
向量的数值运算,若两个向量元素个数相等则对应计算。
若不等且长的向量元素个数 是 短向量元素个数的整数倍,则较短的向量循环重复使用其中的元素,比如长的10个元素,短的2个元素。
若不等且长的向量元素个数 不是 短向量元素个数的整数倍,则报错向量不匹配,比如长的10个元素,短的3个元素。
x+y # 对应位元素相加
x*y # 对应位元素相乘
x**y # 对应位元素幂次运算,x^y
y%%x # 对应位元素取余运算
y%/%x # 对应位元素整除运算# 逻辑运算
x>5 # 每个位置与5进行大小比较,返回TRUE或者FALSE
x>y # 向量x和y的对应元素一一比对大小,返回TRUE或者FALSE
x==y # 向量x和y的对应元素一一比对是否相等,返回TRUE或者FALSE
c(1,2,3) %in% c(1,2,2,4,5)
# 查看左边向量中的元素是否在右边向量中存在:TRUE TRUE FALSEceiling(c(-2.3,3.14)) # 返回不小于设置参数的最小整数:-2 4
floor(c(-2.3,3.14)) # 返回不大于设置参数的最小整数:-3 3
trunc(c(-2.3,3.14)) # 返回设置参数的整数部分: -2 3
round(c(-2.3,3.14)) # 返回设置参数四舍五入的结果: -2 3
round(c(-2.3,3.14),digits = 2) # 返回设置参数四舍五入的结果,保留两位小数:-2.30 3.14
signif(c(-2.3,3.14),digits = 2) # 返回设置参数的有效位数为2位的结果: -2.30 3.14
6、索引值的获取
# 假设数值型向量t <- c(1,4,9,5,6,7)
# 1 4 9 5 6 7which.max(t) # 返回向量t中最大元素值的索引值:3
which.min(t) # 返回向量t中最小元素值的索引值:1
which(t == 7) # 返回向量t中元素值=7的索引值: 6
which(t > 5) # 返回向量t中元素值大于5的索引值:3 5 6