获取另一个向量的值的索引?

时间:2011-09-23 14:41:20

标签: r

我猜这是重复的,但我找不到,所以这里......

我想首先返回第二个索引:

first = c( "a" , "c" , "b" )
second = c( "c" , "b" , "a" )
result = c( 2 , 3 , 1 )

我保证第一个和第二个具有唯一值,并且两者之间具有相同的值。

2 个答案:

答案 0 :(得分:33)

获取值的索引是match()的用途。

 first = c( "a" , "c" , "b" )
 second = c( "c" , "b" , "a" )
 match(second, first)
 [1] 2 3 1

答案 1 :(得分:3)

我正在解决相关问题,根据模式选择向量的元素。假设我们有向量'a',我们希望找到向量'b'的出现。可以通过乘法搜索模式过滤数据表。

a=c(1, 1, 27, 9, 0, 9, 6, 5, 7)
b=c(1, 9)

match(a, b)
[1] 1  1 NA  2 NA  2 NA NA NA

所以匹配()它在这里并没有用。在%中应用二元运算符%更方便:

a %in% b
[1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE

a[a %in% b]
[1] 1 1 9 9

实际上来自match()帮助%in%只是一个环绕match()函数:

"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0