获得满足r中条件的前n个索引

时间:2015-10-09 15:02:15

标签: r

我有一个大的向量,我有不同的值。我想找到小于特定值的前N个值。

例如,在以下向量中,我只想要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

2 个答案:

答案 0 :(得分:6)

您正在寻找rank功能:

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

答案 1 :(得分: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