找到向量中的最大元素小于R中另一个向量中的值

use*_*531 5 r vectorization

我有一个排序的向量x和另一个向量y(不一定是相同的长度).对于y的每个条目,我想找到x的最大条目的索引小于或等于y的条目.

例如,如果

x <- c(2,4,8,9,12) 
y <- c(5,10)
Run Code Online (Sandbox Code Playgroud)

我想返回x每个条目的索引y:

  • 2(因为4是x的最大条目小于5)和
  • 4.

我可以通过循环y来轻松地做到这一点,但我想知道是否有一种方法可以对此进行矢量化.所以我可以矢量化:

for (k in 1:length(y)){
    max(which(x < y[k]))
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*ank 5

假设x已排序,该findInterval函数将起作用:

findInterval(y,x)
# 2 4
Run Code Online (Sandbox Code Playgroud)