查詢 R 向量中元素的索引
Manav Narula
2023年1月30日
2021年1月22日
向量是 R 中的基本資料結構之一,它用於儲存序列中的元素,但與列表不同,向量中的所有元素必須是相同的資料型別。
向量中的每個元素都有一個特定的位置或索引。使用 R 中內建的函式,如 which()
和 match()
,可以知道任何元素的索引。
在本教程中,我們將查詢以下向量中元素 7
和 8
的索引。
x <- c(5,6,8,9,7,5,7,8)
在 R 中使用 which()
函式查詢元素的索引
which()
函式返回與邏輯向量(在本例中為 ==
)相匹配的元素的索引的向量(或索引)。
例如:
x <- c(5,6,8,9,7,5,7,8)
which(x == 7)
[1] 5 7
請注意,由於 7
在向量中出現了兩次,所以它的兩個位置都被返回。如果我們想知道 7
的第一個索引,我們可以簡單地按照下面所示的方法進行。
which(x == 7)[1]
[1] 5
我們也可以使用 which()
函式來尋找多個元素的索引,使用%in%
引數,它為每個匹配的元素返回一個帶有 True
值的向量。
which(x %in% c(7,8))
[1] 3 5 7 8
如你所見,7
和 8
的所有位置都被返回。
在 R 中使用 match()
函式查詢元素的索引
match()
函式與 which()
函式非常相似。它返回的是一個帶有元素第一索引的向量(如果元素在多個位置,如我們的情況),被認為比 which()
函式快。
x <- c(5,6,8,9,7,5,7,8)
match(7,x)
[1] 5
我們也可以用它來尋找多個元素的第一索引,如下圖所示。
x <- c(5,6,8,9,7,5,7,8)
match(c(7,8),x)
[1] 5 3
注意,match()
函式只返回 7
和 8
的第一個位置。這就是為什麼 match()
被認為是這兩種方法中比較快的方法,適用於只需要第一個索引的情況。
Author: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn