R语言 行与行之间的距离
在这篇文章中,我们将学习在R编程语言中计算指定行之间距离的各种方法。
R语言中的dist()函数用于计算R语言中矩阵的指定向量元素之间的各种距离。距离计算的默认方法是 “欧氏距离”,它在数学中被广泛使用。它的语法如下:
语法: dist(vect, method = ” “, diag = TRUE or FALSE, upper = TRUE or FALSE)
参数
- vect: 一个二维向量
- method: 要测量的距离。它必须等于其中之一,”欧氏”、”最大”、”曼哈顿”、”堪培拉”、”二进制 “或 “明斯基”。
- diag: 逻辑值(TRUE或FALSE),表示是否应该用print.dist打印距离矩阵的对角线。
- upper: 逻辑值(TRUE或FALSE),表示是否应通过print.dist打印距离矩阵的上三角。
返回类型
它返回一个 “dist “类的对象
在R中计算欧几里得距离以获得行间距离
在数学中,任何两点之间的欧氏距离被描述为它们之间线段的长度,它也被称为直线距离。矩阵中任何两行向量A和B之间的欧氏距离可以通过以下公式给出。
Euclidean distance = √Σ(vect1i - vect2i)2
其中,
- vect1是第一个矢量
- vect2是第二个向量
# creating matrix
matr <- matrix(1:12, nrow = 4)
print("Original Matrix")
print(matr)
# calculating the distance between
# rows of matrix
print("Euclidean Distance between rows of matrix")
dist(matr)
输出
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[1] "Euclidean Distance between rows of matrix"
1 2 3
2 1.732051
3 3.464102 1.732051
4 5.196152 3.464102 1.732051
解释:
- 第1行和第2行之间的欧氏距离是1.732051。
- 第1行和第3行之间的欧几里得距离是3.464102。
- 第1行和第4行之间的欧几里得距离是5.196152。
- 行2和行2之间的欧氏距离是0
- 第2行和第3行之间的欧氏距离是1.732051
- 第2行和第4行之间的欧几里得距离是3.464102
- 第3行与第3行之间的欧氏距离是0
- 第3行和第4行之间的欧氏距离是1.732051。
在R中计算堪培拉距离以获得行间距离
矩阵中指定行的任何两对元素之间的堪培拉距离可以通过以下公式给出。
∑ |vect1i - vect2i| / (|vect1i| + |vect2i|)
dist()方法可以通过指定相当于 “堪培拉 “的方法名称来定制。其结果是矩阵的行数小于输入数据框,单元格的值表示行与行之间的距离。
语法: dist(vect, method = "canberra", diag = TRUE or FALSE, upper = TRUE or FALSE)
# Creating matrix
matr <- matrix(1:12, nrow = 4)
print("Original Matrix")
print(matr)
# Calculating the distance
# between rows of matrix
print("Canberra Distance between rows of matrix")
dist(matr,method="canberra")
输出
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[1] "Canberra Distance between rows of matrix"
1 2 3
2 0.4768740
3 0.7666667 0.3245421
4 0.9736264 0.5670996 0.2530021
在R中计算最大距离以获得行间距离
所有矩阵行之间的最大距离,一次取两行,总是一个表示任何两对输入行之间最大行数的积分矩阵。通过修改dist()方法,将方法名称指定为 “最大”,就可以很容易地计算出它。
# Creating matrix
matr <- matrix(1:12, nrow = 4)
print("Original Matrix")
print(matr)
# Calculating the distance between
# rows of matrix
print("Maximum Distance between rows of matrix")
dist(matr,method="maximum")
输出
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[1] "Maximum Distance between rows of matrix"
1 2 3
2 1
3 2 1
4 3 2 1
在R中计算二进制距离以获得行之间的距离
两个向量之间共享一部分元素。有时,这个共享元素的比例可能是0。 二进制距离说明了这一点。指定输入向量,然后用R中的dist()方法计算它们之间的二进制距离,方法等同于 “二进制”。
语法: dist(vect, method = "binary", diag = TRUE or FALSE, upper = TRUE or FALSE)
# Creating matrix
matr <- matrix(1:12, nrow = 4)
print("Original Matrix")
print(matr)
# Calculating the distance between
# rows of matrix
print("Maximum Distance between rows of matrix")
dist(matr,method="binary")
输出
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[1] "Maximum Distance between rows of matrix"
1 2 3
2 0
3 0 0
4 0 0 0
在R中计算Minkowski距离以获得行与行之间的距离
闵科夫斯基距离被认为是欧几里得和曼哈顿距离的概括。下面的公式给出了输入矩阵中任何两行向量之间的闵可夫斯基长度。
(Σ|vect1i - vect2i|p)1/p
其中。
- vect1是第一个矢量
- vect2是第二个向量
- p是一个整数
语法: dist(vect, method = "minkowski", p = integer, diag = TRUE or FALSE, upper = TRUE or FALSE)
下面的代码片段说明了p的积分值等于3,用于计算行向量之间的Minkowski距离。
# Creating matrix
matr <- matrix(1:12, nrow = 4)
print("Original Matrix")
print(matr)
# Calculating the distance between
# rows of matrix
print("Maximum Distance between rows of matrix")
dist(matr, method="minkowski", p=3)
输出
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[1] "Maximum Distance between rows of matrix"
1 2 3
2 1.442250
3 2.884499 1.442250
4 4.326749 2.884499 1.442250
极客教程