欧几里德距离的两个向量

Jan*_*ana 47 r

如何找到两个向量的欧几里德距离:

x1 <- rnorm(30)
x2 <- rnorm(30)
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 62

使用该dist()函数,但您需要从第一个参数的两个输入形成一个矩阵dist():

dist(rbind(x1, x2))
Run Code Online (Sandbox Code Playgroud)

  • 我不应该得到一个单一的距离测量作为答案吗?你的灵魂给了我一个矩阵. (6认同)

Eri*_*lts 35

正如维基百科上所定义的那样,应该这样做.

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
Run Code Online (Sandbox Code Playgroud)

包中的rdist功能fields也可能有用.看到这里.


编辑:**操作员更改为^.谢谢,加文.

  • 在我的Ubuntu框中,dist(rbind(x1,x2))快三倍。 (2认同)
  • 我刚刚在Ubuntu上的R 3.0.2上试过这个,这个方法对我来说比`dist(rbind())`方法快了大约12倍.(用`system.time测试({a < - c(2,6,78); b < - c(4,6,2); for(i in 1:1000000){dist(rbind(a,b)) )}})`) (2认同)

so1*_*311 13

试着用这个:

sqrt(sum((x1-x2)^2))
Run Code Online (Sandbox Code Playgroud)