Hel*_*ed3 2 r function euclidean-distance
我正在尝试编写一个函数来计算 n 维上两点之间的欧几里德距离。
我有以下代码:
euc_dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
Run Code Online (Sandbox Code Playgroud)
这适用于两点x1和之间x2。但是,我正在尝试对两点之间的 n 维执行此操作。
例如,在 Python 中,它适用于:
def euc_distance(p, q):
return math.sqrt(sum((px - qx) ** 2 for px, qx in zip(p, q)))
Run Code Online (Sandbox Code Playgroud)
即您可以输入例如三个维度(两点之间):
euc_distance([2, 1, 4], [4, 9, 8])
Run Code Online (Sandbox Code Playgroud)
我如何编辑我的 R 代码来完成同样的事情?
除了其他答案之外,您还可以使用norm:
x1 <- c(2,1,4)
x2 <- c(4,9,8)
norm(as.matrix(x1 - x2), "F")
#R> [1] 9.165151
Run Code Online (Sandbox Code Playgroud)
这在数值上是稳定的,因为它最终调用dlange()LAPACK 函数。
| 归档时间: |
|
| 查看次数: |
2085 次 |
| 最近记录: |