R語言向量下標


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

利用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.minwhich.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

RR語言小白速通
R懂點R語言
歡迎分享收藏關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章