查找 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