如何计算 r 中的欧几里德距离(附示例)
两个向量 A 和 B 之间的欧氏距离计算如下:
欧氏距离 = √ Σ(A i -B i ) 2
为了计算 R 中两个向量之间的欧几里德距离,我们可以定义以下函数:
euclidean <- function (a, b) sqrt ( sum ((a - b)^2))
然后我们可以使用这个函数来计算任意两个向量之间的欧几里得距离:
#define two vectors a <- c(2, 6, 7, 7, 5, 13, 14, 17, 11, 8) b <- c(3, 5, 5, 3, 7, 12, 13, 19, 22, 7) #calculate Euclidean distance between vectors euclid(a, b) [1] 12.40967
两个向量之间的欧几里得距离为12.40967 。
请注意,我们还可以使用此函数来计算数据框两列之间的欧几里得距离:
#define data frame df <- data.frame(a=c(3, 4, 4, 6, 7, 14, 15), b=c(4, 8, 8, 9, 14, 13, 7), c=c(7, 7, 8, 5, 15, 11, 8), d=c(9, 6, 6, 7, 6, 15, 19)) #calculate Euclidean distance between columns a and d euclid(df$a, df$d) [1] 7.937254
请注意,如果两个向量的长度不同,此函数将产生警告消息:
#define two vectors of unequal length a <- c(2, 6, 7, 7, 5, 13, 14) b <- c(3, 5, 5, 3, 7, 12, 13, 19, 22, 7) #attempt to calculate Euclidean distance between vectors euclid(a, b) [1] 23.93742 Warning message: In a - b: longer object length is not a multiple of shorter object length
您可以参考此维基百科页面以了解有关欧几里得距离的更多信息。
其他资源
如何用R计算到曼哈顿的距离
如何计算R中的闵可夫斯基距离
如何计算R中的汉明距离
如何计算R中的马氏距离
如何计算R中的编辑距离