R: find nearest index

nearest-neighbor, r, vectorization

Solution

You can just put your code in a sapply. I think this has the same speed as a for loop so isn't technically vectorized though:

sapply(b,function(x)which.min(abs(x - A)))

Problem

I have two vectors with a few thousand points, but generalized here: ``` A <- c(10, 20, 30, 40, 50) b <- c(13, 17, 20) ``` How can I get the indicies of `A` that are nearest to `b`? The expected outcome would be `c(1, 2, 2)`. I know that `findInterval` can only find the first occurrence, and not the nearest, and I'm aware that `which.min(abs(b[2] - A))` is getting warmer, but I can't figure out how to vectorize it to work with long vectors of both `A` and `b`.

Original source