查找 R 向量中元素的索引

Manav Narula 2023年1月30日
  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() 被认为是这两种方法中比较快的方法,适用于只需要第一个索引的情况。

作者: 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