我想在整个矢量中返回矢量位置的索引。
例如,
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])
}
答案 0 :(得分:2)
只是回答这个问题,上面的评论都有效。
findInterval(values, unique(c(a, b)))
Henrik的回答使用了基础包中鲜为人知的函数findInterval
。这个函数有几个参数可以使它适应大多数情况。
sapply(values, function(x) which(a<=x & b>x))
d.p的回答采用OP的循环并使其适应sapply
。如果您不记得findInterval
或者您只是想更直接地控制正在发生的事情,这可能是更好的选择。