2015-06-26 72 views
0

我有這樣一個載體如下:R鍵找到一個向量元素,他們的指數劑量不會在另一個載體存在

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

回答

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 
+0

我接受這是解決方案雖然@teucer答案是可以接受的太多,但這個答案是正確的,沒有任何修改。我使用的陣列很短,所以速度並不是什麼大問題。 – Ash

3

這可能是更有效的

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

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

整潔的解決方案,雖然我無法修改VEC,因爲我在代碼中的其他地方使用它。所以基本上我應該存儲/恢復它們 – Ash

相關問題