Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用正负坐标计算R中的点之间的距离_R - Fatal编程技术网

如何用正负坐标计算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()
对象修改为正确的标签?