如何在 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