向量下標即元素在向量中的位置,在實踐中我們可以利用下標(元素的位置)來找出自己想要的數。
利用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