R apply()查找两个向量中最接近的值

R apply()查找两个向量中最接近的值,r,vector,apply,R,Vector,Apply,我有两个向量,我需要写一个代码来找到第二个向量中最接近第一个向量的值的位置。我还需要它在计算上非常高效,因为数据集会很大,所以我试图避免循环 v1 <- c(-.2, -.5, -.12, -.8, -.04, -.9, -.2, -.77, -.3, -.01) v2 <- c(-.015, -.06, -.12, -.2, -.3, -.4, -.52, -.65, -.78, -.92) v1使用sapply,选项为 sapply(v1, function(x) whic

我有两个向量,我需要写一个代码来找到第二个向量中最接近第一个向量的值的位置。我还需要它在计算上非常高效,因为数据集会很大,所以我试图避免循环

 v1 <- c(-.2, -.5, -.12, -.8, -.04, -.9, -.2, -.77, -.3, -.01)
 v2 <- c(-.015, -.06, -.12, -.2, -.3, -.4, -.52, -.65, -.78, -.92)

v1使用
sapply
,选项为

sapply(v1, function(x) which.min(abs(v2 - x)))
#[1]  4  7  3  9  2 10  4  9  5  1
或使用
外部

max.col(-abs(outer(v1, v2, `-`)), 'first')
#[1]  4  7  3  9  2 10  4  9  5  1

或者使用
findInterval

i1 <- order(v1)
findInterval(v2, v1[i1])[i1]
i1
max.col(-abs(outer(v1, v2, `-`)), 'first')
#[1]  4  7  3  9  2 10  4  9  5  1
i1 <- order(v1)
findInterval(v2, v1[i1])[i1]