找到到集合的最小距离

我有两组,A 和 B,都包含一些粒子的位置。我想要做的是以下内容:

For each element a in A, 
    Calculate the minimum distance between a and the elements of B.
Put these distances in to a list and return.

我知道如何用外观来做到这一点,但我不知道如何使用data.table语法快速地做到这一点 。

回答

我们可以使用sapply循环 'A',min abs从 'B' 向量中获取olute 差异并将其存储为vector

sapply(A, function(x) min(abs(x - B)))

或者使用data.table语法

dt1[, lapply(A, function(x) min(abs(x - B)))]

如果向量被排序,一个快速的选项是 findInterval

A[findInterval(A, B)]

如果这些是列 data.table

dt1[, A[findInterval(A, B)]]

或使用 outer

outer(A, B, FUN = function(x, y) min(abs(x - y)))


以上是找到到集合的最小距离的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>