在R中,假设有多个条件向量,如何在向量上返回索引向量?

时间:2017-12-22 17:28:44

标签: r indexing

我想在整个矢量中返回矢量位置的索引。

例如,

a = c(0,10,20,30) #lower bound
b = c(10,20,30,40) #upper bound
values = c(1,5,24,30)

#I want idx to return the index of a/b across all elements in values
# I was hoping this would work:
idx = which(a<=values & b>values)

#I can get it if I do a for loop but I want to avoid a for loop
idx = c(0)
for(i in 1:length(values)){
    idx[i]= which(a<=values[i] & b>values[i])  

 }    

1 个答案:

答案 0 :(得分:2)

只是回答这个问题,上面的评论都有效。

findInterval(values, unique(c(a, b)))

Henrik的回答使用了基础包中鲜为人知的函数findInterval。这个函数有几个参数可以使它适应大多数情况。

sapply(values, function(x) which(a<=x & b>x))

d.p的回答采用OP的循环并使其适应sapply。如果您不记得findInterval或者您只是想更直接地控制正在发生的事情,这可能是更好的选择。