我有一个如下的矢量:
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。
答案 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]