R:哪个()与矢量条件

时间:2018-02-14 17:34:11

标签: r which

我有数据

test <- 1:10

我希望获得满足不同相关条件的test指数。例如,

which(test>5)[1] 
which(test>8)[1]
which(test>9)[1]

产量

[1]  6  
[1]  9 
[1]  10

单独执行时,有没有办法使用像

这样的矢量同时执行它们
bounds <- c(5,8,9)
然后

产生一个包含bounds中每个值的索引的向量?

2 个答案:

答案 0 :(得分:1)

有几个选项

findInterval(bounds, test) + 1
#[1]  6  9 10

这是最快的,或

max.col(outer(bounds, test, `<`), 'first')
#[1]  6  9 10

这是最慢的,以及OP的帖子下面的评论:

sapply(bounds, function(x) which(test > x)[1])
#[1] 6 9 10

既不是最快的也不是最慢的。

答案 1 :(得分:0)

只需使用apply:

sapply(bounds, function(x) which(test>x)[1]) [1] 6 9 10