R中通过逐元素矢量比较找到最小差异和对应值的最佳方法是什么?

问题描述 投票:0回答:1

我有一个问题。向量A是查询,向量B是参考。我想看看A的哪个值最接近B的值之一。这两个向量都是有序的。

输入

A = c(1, 1.2, 4, 8, 9, 10, 30)
B = c(0.1, 3.9)

输出

min_diff_value = 0.1
min_value_A = 4
min_value_B = 3.9 (optionnal)

我想知道是否有技巧可以在没有耗时的循环的情况下执行此操作?谢谢。

r vector difference minimum elementwise-operations
1个回答
0
投票

您可以使用outer

A = c(1, 1.2, 4, 8, 9, 10, 30)
B = c(0.1, 3.9)

mat <- outer(A, B, `-`)
min_diff_value <- min(abs(mat))
dim <- which(mat == min_diff_value, arr.ind = TRUE)
min_value_A <- A[dim[, 1]]
min_value_B <- B[dim[, 2]]

min_diff_value
#[1] 0.1
min_value_A
#[1] 4
min_value_B
#[1] 3.9
© www.soinside.com 2019 - 2024. All rights reserved.