找到第二个向量中一个值向量的所有匹配的所有位置

时间:2015-05-17 01:04:13

标签: r match vectorization

我需要在向量中找到与另一个向量的任何值对应的所有位置:

needles <- c(4, 3, 9)
hay <- c(2, 3, 4, 5, 3, 7)
mymatches(needles, hay) # should give vector: 2 3 5 

是否有任何预定义功能允许这样做?

2 个答案:

答案 0 :(得分:12)

这应该有效:

which(hay %in% needles) # 2 3 5

答案 1 :(得分:1)

R已经具有match() fn / %in% operator,它们是同一对象,并且已向量化。您的解决方案:

which(!is.na(match(hay, needles)))
[1] 2 3 5

或@jalapic显示的较短语法which(hay %in% needles)

如果愿意,可以使用match()查看每个位置上匹配的特定值...

match(hay, needles)
[1] NA  2  1 NA  2 NA

或匹配发生位置的逻辑矢量:

!is.na(match(hay, needles))
[1] FALSE  TRUE  TRUE FALSE  TRUE FALSE