我有一个大的向量,我有不同的值。我想找到小于特定值的前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
答案 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