2015-10-09 38 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