如何用正负坐标计算R中的点之间的距离
我有以下群集点的数据框及其相应的坐标:如何用正负坐标计算R中的点之间的距离,r,R,我有以下群集点的数据框及其相应的坐标: 库(tidyverse) dat#A tible:15 x 3 #>簇X Y #> #> 1 1 -54.6 8.22 #> 2 10 -28.3 28.9 #> 3 11 52.9 -34.6 #> 4 12 -25.8 -37.9 #> 5 13 39.0 -12.7 #> 6 14 70.9 -3.14 #>
库(tidyverse)
dat#A tible:15 x 3
#>簇X Y
#>
#> 1 1 -54.6 8.22
#> 2 10 -28.3 28.9
#> 3 11 52.9 -34.6
#> 4 12 -25.8 -37.9
#> 5 13 39.0 -12.7
#> 6 14 70.9 -3.14
#> 7 15 -15.2 -1.12
#> 8 2 40.7 21.1
#> 9 3 9.24 -17.7
#> 10 4 -55.9 40.2
#> 11 5 -6.27 33.0
#> 12 6 -64.6 -24.5
#> 13 7 18.8 56.6
#> 14 8 20.1 -48.0
#> 15 9 -16.0 71.7
从视觉上看,它是这样的:
我想做的是计算点之间的距离。
这是我使用欧几里德距离的尝试:
dm正如评论中所建议的那样,我宁愿质疑绘图而不是距离矩阵。使用正确的打印方法,结果与您的“dist”
对象一致
plot(dat[, 3:2], type="n")
text(dat[, 3:2], labels=rownames(dat))
当您订购数据帧时,您可以获得标记的距离矩阵。然后,它将与可视化绘图相关联
dat1 <- dat[order(as.numeric(dat$clusters)),]
> dist(dat1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
2 96.21531
3 68.94239 49.95055
4 32.17082 98.55495 87.18599
5 54.46979 48.58360 53.04058 50.18649
6 34.55753 114.80661 74.18462 65.32268 81.88039
7 88.10836 42.02375 74.97536 76.54699 34.47016 116.28386
8 93.72334 72.34725 32.56222 116.49266 85.21099 87.84452 104.57511
9 74.72713 76.29347 93.02633 51.10278 40.06054 107.79097 37.93428 124.95782
10 34.66964 69.91816 60.23042 30.46562 22.94263 64.67899 54.69264 90.84614 44.51743
11 116.11990 57.70441 47.45742 132.22019 90.01631 117.95846 97.42233 35.54568 126.62155 103.04622
12 55.51872 89.51715 41.48510 84.15554 73.92415 41.45771 104.64317 47.12519 110.10085 66.92974 78.74355
13 96.64427 35.61056 31.74177 109.04167 64.82483 104.42754 72.43916 40.30899 100.77702 79.15489 25.98647 69.51704
14 126.66256 40.48522 64.25939 134.37608 85.65992 137.33531 79.54270 68.03145 114.71276 104.27851 36.38072 102.77273 33.32874
15 42.88554 61.54235 31.84674 59.09243 36.65805 55.37756 67.43388 59.04060 73.04473 33.14849 75.92390 38.44781 55.40182 86.06602
dat1区(dat1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
2 96.21531
3 68.94239 49.95055
4 32.17082 98.55495 87.18599
5 54.46979 48.58360 53.04058 50.18649
6 34.55753 114.80661 74.18462 65.32268 81.88039
7 88.10836 42.02375 74.97536 76.54699 34.47016 116.28386
8 93.72334 72.34725 32.56222 116.49266 85.21099 87.84452 104.57511
9 74.72713 76.29347 93.02633 51.10278 40.06054 107.79097 37.93428 124.95782
10 34.66964 69.91816 60.23042 30.46562 22.94263 64.67899 54.69264 90.84614 44.51743
11 116.11990 57.70441 47.45742 132.22019 90.01631 117.95846 97.42233 35.54568 126.62155 103.04622
12 55.51872 89.51715 41.48510 84.15554 73.92415 41.45771 104.64317 47.12519 110.10085 66.92974 78.74355
13 96.64427 35.61056 31.74177 109.04167 64.82483 104.42754 72.43916 40.30899 100.77702 79.15489 25.98647 69.51704
14 126.66256 40.48522 64.25939 134.37608 85.65992 137.33531 79.54270 68.03145 114.71276 104.27851 36.38072 102.77273 33.32874
15 42.88554 61.54235 31.84674 59.09243 36.65805 55.37756 67.43388 59.04060 73.04473 33.14849 75.92390 38.44781 55.40182 86.06602
您的问题不在于距离矩阵,而在于绘图本身。如果簇2的x
坐标值为负值,它怎么可能位于右上角?在图中,您可以查看标记的点,但是在距离矩阵中,1到15只是一个索引。首先根据标签对数据帧进行排序,例如,dat[Order(as.numeric(dat$clusters)),]
@CIAndrews如何将dist()
对象修改为正确的标签?