我需要在向量中找到与另一个向量的任何值对应的所有位置:
needles <- c(4, 3, 9)
hay <- c(2, 3, 4, 5, 3, 7)
mymatches(needles, hay) # should give vector: 2 3 5
是否有任何预定义功能允许这样做?
答案 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