基于R语言distm与apply函数的计算结果解读:min_distance含义咨询
解读R语言distm与apply生成的min_distance结果
咱们一步步拆解你的代码,搞清楚min_distance到底是什么含义:
代码逻辑拆解
- 首先你创建的
database是包含10个物业经纬度的数据集。 distm(database[,2:1]):distm函数默认用WGS84椭球计算球面距离,单位是米。这里你把经度(第2列)放在纬度(第1列)前面,符合distm的输入要求(先经度后纬度),生成的是一个10×10的距离矩阵,矩阵里的d[i,j]代表第i个物业到第j个物业的距离。diag(d) <- 1000000:把矩阵的对角线元素(也就是每个物业到自己的距离)设成一个极大值,这样后续计算最小值时,就不会把“自己到自己”的0距离算进去。apply(d, MARGIN=2, FUN=min):apply函数按列(MARGIN=2表示列)遍历距离矩阵,每一列取最小值,最后转成矩阵格式得到min_distance。
min_distance结果的具体含义
min_distance里的每一行值,对应的是对应序号的物业到其他所有物业的最小距离:
- 第1行的
1522.9967:是第1个物业到另外9个物业的距离里最小的那个值 - 第2行的
1522.9967:是第2个物业到另外9个物业的距离里最小的那个值 - 你会发现第1、2行数值相同,第3、4行相同,第5、6行相同,第8、9行相同——这说明这些成对的物业是彼此的最近邻(比如物业1的最近邻是物业2,物业2的最近邻也是物业1)。
- 第10行的
2687.3265:是第10个物业到其他9个物业的最小距离,也是所有结果里最大的,说明这个物业离其他所有物业都相对更远。
关于结果的确认
你的判断方向是对的,但要更精准一点:这个结果不是所有点位之间的全局最小距离,而是每个单独点位到其他所有点位的最小距离——也就是每个物业自己的“最近邻距离”。
内容的提问来源于stack exchange,提问作者Carlo Soares
相关产品推荐
相关产品推荐

