2015-10-09 39 views
0

我有一個大的向量,其中有不同的值。我想找到小於特定值的前N個值。獲取滿足條件的前n個索引r

例如在下面的向量我想僅3個指標,其是小於3

x2 <- c(1.6,0.35,1,3,6,8,1.5,2) 
x3 <- which(x2 < 3) 
x3 
[1] 1 2 3 7 8 

從X3我可以提取前三個值,但它們不是在載體中的最小的值。如果我在應用條件之前命令X2向量,我將丟失值的索引。我想在結束是如下

[1] 2 3 7 
+0

您是否正在尋找索引矢量中最小的三個值? –

+0

@CactusWoman:是的,這是正確的。 – Vamsi

+0

這可能會回答你的問題:http://stackoverflow.com/questions/13458702/determining-minimum-values-in-a-vector-in-r –

回答

4

rank功能的工作是你在找什麼:

which(rank(x2)<=3 & x2<3) 
#[1] 2 3 7 
+0

感謝您的回答。這正是我所期待的。 – Vamsi

1

嘗試:

match(sort(x2[x2 < 3])[1:3], x2) 
#[1] 2 3 7 

我們可以匹配的最小3個值小於閾值原來的載體。

編輯

這將獨特和非唯一載體

which(!is.na(match(x2, sort(x2[x2 < 3])[1:3]))) 
[1] 2 3 7 
+0

感謝您的回答。但是,如果矢量不是唯一的,這不起作用。 – Vamsi

+0

我更新了。但我認爲@ nicola更重要。選擇那一個。 –

+0

感謝您的更新。 – Vamsi