查詢 R 向量中元素的索引

Manav Narula 2023年1月30日 2021年1月22日
  1. 在 R 中使用 which() 函式查詢元素的索引
  2. 在 R 中使用 match() 函式查詢元素的索引
查詢 R 向量中元素的索引

向量是 R 中的基本資料結構之一,它用於儲存序列中的元素,但與列表不同,向量中的所有元素必須是相同的資料型別。

向量中的每個元素都有一個特定的位置或索引。使用 R 中內建的函式,如 which()match(),可以知道任何元素的索引。

在本教程中,我們將查詢以下向量中元素 78 的索引。

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

如你所見,78 的所有位置都被返回。

在 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() 函式只返回 78 的第一個位置。這就是為什麼 match() 被認為是這兩種方法中比較快的方法,適用於只需要第一個索引的情況。

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

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

相關文章 - R Vector