gpt4 book ai didi

R:向量 a 的元素和向量 b 的元素之间的最小距离

转载 作者:行者123 更新时间:2023-12-04 10:52:50 26 4
gpt4 key购买 nike

ab 是实数的两个向量。

它们不一定具有相同的长度。

a的第i元素与bj元素之间的距离定义为abs(a[i] - b[j])

如果没有显式循环,您将如何计算 a 的任何元素与 b 的任何元素之间的最小距离?

这是我所做的:min(sapply(X=1:length(b), FUN=function(x) abs(a - b[x]))).

不过,我觉得还有更好的事情要做……

最佳答案

我会使用 dist 函数来创建一个距离矩阵,然后找到其中的最小距离。这可能比 R 中的显式循环(包括 sapply)快得多。

a = runif(23)
b = runif(10)
d_matrix = as.matrix(dist(cbind(a,b)))
d_matrix[d_matrix == 0] <- NA
sqrt(min(d_matrix, na.rm = TRUE))

请注意,cbind 会回收较小的向量。所以这个函数可能不是最优的,但对于大小差异不大的向量,仍然比显式循环快得多。

并找出哪一对元素有这个距离(尽管回收在这里引入了一些挑战):

which(d_matrix == min(d_matrix, na.rm = TRUE), arr.ind = TRUE)

关于R:向量 a 的元素和向量 b 的元素之间的最小距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com