向量下标即元素在向量中的位置,在实践中我们可以利用下标(元素的位置)来找出自己想要的数。
利用runif
函数生成包含10个正整数的向量x。
options(digits = 1)
set.seed(1234)
x <- runif(10,min = 1,max = 20)
x
[1] 3 13 13 13 17 13 1 5 14 11
正整数下标
我们可以输入正整数作为下标来找出对应位置的元素。
在[]
内输入下标。
#向量x的第一位置的元素
x[1]
[1] 3
#向量x的第2位置的元素
x[2]
[1] 13
x[0]
numeric(0)
与其他编程语言不一样(下标从0开始算起),R的下标是从
1
开始算起。
在R语言中向量输入0
下标返回numeric(0)
。
如果在其他语言,如python中输入下标0,则返回向量中第一个位置的元素
负整数下标
如果为负整数
则表示删除这个位置的元素,并返回余下的元素。
x
[1] 3 13 13 13 17 13 1 5 14 11
#删除第一位的元素
x[-1]
[1] 13 13 13 17 13 1 5 14 11
倒数位置选取元素
如果是以倒数位置选取元素。倒数第一位置借助length
函数表示下标,倒数第二三等等依次递减。
set.seed(1234)
x <- runif(10,min = 1,max = 20)
x
[1] 3 13 13 13 17 13 1 5 14 11
# 倒数第一位元素
x[length(x)]
[1] 11
# 倒数第二位元素
x[length(x)-1]
[1] 14
下标赋值
可以根据下标位置来进行赋值
x
[1] 3 13 13 13 17 13 1 5 14 11
#将第一位置赋值为8
x[1] <- 8
x
[1] 8 13 13 13 17 13 1 5 14 11
下标超界
下标超界即向量x的长度为n,它的最大下标即是n,如果超过n,则超界。
在R中向量下标超界
则返回NA空白值
。如果对这个下标位置赋值
,则生成对应位置的元素
length(x)
[1] 10
x[11]
NA
x[11] <- 15
x
[1] 3 13 13 13 17 13 1 5 14 11 15
逻辑下标
可以以逻辑表达式作为下标,返回对应的元素。
set.seed(1234)
x <- runif(10,min = 1,max = 20)
x
[1] 3 13 13 13 17 13 1 5 14 11
#找出数值大于10的元素
x[x > 10]
[1] 13 13 13 17 13 14 11
which函数、seq函数
which函数找出对应元素的下标
x
[1] 3 13 13 13 17 13 1 5 14 11
#找出取值大于13的元素的位置下标
which(x>13)
[1] 5 6 9
seq
函数也可以返回下标
seq(along=x)[x>13]
[1] 5 6 9
seq_along(x)[x>13]
[1] 5 6 9
seq(along.with=x)[x>13]
[1] 5 6 9
可以在for循环中用
seq_along(x)
代替1:length(x)
for (i in seq_along(x)) {
print(x[i])
}
for (i in 1:length(x)) {
print(x[i])
}
which.min
与which.max
可以分别找出向量中最小值与最大值的下标位置
x
[1] 3 13 13 13 17 13 1 5 14 11
which.min(x)
[1] 7
which.max(x)
[1] 5
返回NA
的下标
a <- c(NA,1,NA,23,45,NA)
which(is.na(a))
[1] 1 3 6