R在向量中找到其指数不存在于另一个向量中的元素

时间:2015-06-26 20:30:28

标签: r vector find match

我有一个如下的矢量:

VEC = c(4,8,8,8)

我还有一个索引向量,告诉我VEC中应该忽略哪些元素:

indx = c(2,4)

我想得到第一个元素的索引,其值为8,但索引在indx数组中不存在。我怎么能这样做?

所以基本上我应该得到3作为答案。 VEC[3] = 8(但第二个8不是第一个)。

这是另一个 VEC = c(1,3,5,3,3,3,3)这里是忽略列表:indx=c(1,2,4,6) 假设我正在寻找匹配3的值。应该返回的索引是5,因为VEC[1], VEC[2], VEC[4], VEC[6]在忽略列表中,第一次出现的索引值为5。

2 个答案:

答案 0 :(得分:3)

如果您想要原始索引,那么您可以执行类似

的操作
VEC <- c(4,8,8,8)
indx <- c(2,4)

which(VEC==8 & !(seq_along(VEC) %in% indx))
which(VEC==8 & !(seq_along(VEC) %in% indx))[1] #to get just the first

这有点难看但可能更有效率

ok<-`[<-`(!logical(length(VEC)), indx, FALSE)
which(VEC==8 & ok)
which(VEC==8 & ok)[1] #to get just the first

答案 1 :(得分:3)

这可能更有效率

VEC <- c(4,8,8,8)
indx <- c(2,4)

VEC[indx] <- NA
which(VEC==8)[1]