如何在 r 中使用 dist 函数(附示例)


R 中的dist()函数可用于计算距离矩阵,该矩阵显示矩阵或数据框中行之间的距离。

该函数使用以下基本语法:

dist(x, 方法=”欧几里得”)

金子:

  • x:矩阵或数据块的名称。
  • method:要使用的距离测量。默认值为“Euclidean”,但选项包括“maximum”、“manhattan”、“canberra”、“binary”或“minkowski”。

以下示例展示了如何在实践中使用以下数据框使用此函数:

 #define four vectors
a <- c(2, 4, 4, 6)
b <- c(5, 5, 7, 8)
c <- c(9, 9, 9, 8)
d <- c(1, 2, 3, 3)

#row bind four vectors into matrix
mat <- rbind(a, b, c, d)

#view matrix
mast

  [,1] [,2] [,3] [,4]
a 2 4 4 6
b 5 5 7 8
c 9 9 9 8
d 1 2 3 3

示例1:使用dist()计算欧氏距离

两个向量 A 和 B 之间的欧氏距离计算如下:

欧氏距离 = √ Σ(A i -B i ) 2

以下代码显示如何计算距离矩阵,该距离矩阵显示 R 中矩阵各行之间的欧几里德距离:

 #calculate Euclidean distance between each row in matrix
dist(mat)

          ABC
b4.795832                    
c 10.148892 6.000000          
d 3.872983 8.124038 13.190906

以下是如何解释结果:

  • 线 a 和线 b 之间的欧几里德距离为4.795832
  • 线 a 和线 c 之间的欧几里德距离是10.148892
  • 线 a 和线 d 之间的欧几里德距离为3.872983
  • 线 b 和线 c 之间的欧几里德距离为6.000000
  • 线 b 和线 d 之间的欧几里德距离为8.124038
  • 线 c 和线 d 之间的欧几里德距离是13.190906

示例2:使用dist()计算最大距离

两个向量 A 和 B 之间的最大距离计算为所有成对元素之间的最大差。

以下代码展示了如何计算距离矩阵,该距离矩阵显示 R 中矩阵每行之间的最大距离:

 #calculate Maximum distance between each row in matrix
dist(mat, method=" maximum ")

  ABC
b 3    
c 7 4  
d 3 5 8

示例 3:使用 dist() 计算距堪培拉的距离

两个向量 A 和 B 之间的堪培拉距离计算如下:

距堪培拉的距离 = Σ |A i -B i | / |人工智能| + ||

以下代码显示如何计算距离矩阵,该距离矩阵显示 R 中矩阵每行之间的堪培拉距离:

 #calculate Canberra distance between each row in matrix
dist(mat, method=" canberra ")

          ABC
b 0.9552670                    
c 1.5484515 0.6964286          
d 1.1428571 1.9497835 2.3909091

示例4:使用dist()计算二进制距离

两个向量 A 和 B 之间的二元距离计算为两个向量共享元素的比例。

以下代码显示如何计算距离矩阵,该距离矩阵显示 R 中矩阵各行之间的二进制距离:

 #calculate Binary distance between each row in matrix
dist(mat, method=" binary ")

  ABC
b 0    
c 0 0  
d 0 0 0

示例 5:使用 dist() 计算 Minkowski 距离

两个向量 A 和 B 之间的Minkowski 距离计算如下:

闵可夫斯基距离 = (Σ|a i – b i | p ) 1/p

其中i是每个向量的第 i元素, p是一个整数。

以下代码显示如何计算距离矩阵,该距离矩阵显示 R 中矩阵每行之间的 Minkowski 距离(使用 p=3):

 #calculate Minkowski distance between each row in matrix
dist(mat, method=" minkowski ", p= 3 )

          ABC
b 3.979057                    
c 8.439010 5.142563          
d 3.332222 6.542133 10.614765

其他资源

如何在R中计算Jaccard相似度
如何计算R中的余弦相似度
如何计算R中的点积

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注