我有数据
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
中每个值的索引的向量?
答案 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