首页 > 解决方案 > R中矢量预测中的欧几里德距离计算

问题描述

我有一个矩阵,它通过 38*35 矩阵的坐标(例如(1,1))保存位置信息。

##(1,1) (1,2) (1,3) (1,4) .... (1,38)
##(2,1) ....
##....
##(35,38) 

我已将每个点创建为一个向量数组,因此 (1,1)=1, (1,2)=2, ... (2,1)=39, (2,2)=40, ... . (35, 38)=1330 等等。

#1
#2
#3
#4
#5
#6
#7
#8
...
#1330

计划是放入预测数据点 P 并找出 P 和实际数据 X 之间的欧式距离。直到两个点在同一行上是没有问题的(距离等于两个数字的减法),但是如果我要比较的两个数据落在不同的行上,就会出现问题。

例如,“实际上意味着(2,2),我不能再减去了。

我一直在尝试创建if语句,但它似乎变得越来越复杂。

#original data: x, predicted data:p
if(p<39){
 distance <- abs(p-x)
 } else if(x<77){
 distance <- (sqrt(1)^2+((p-38)^2)
 }

标签: rvectordistance

解决方案


尝试给我们一个可重复的示例,以便我们可以通过在您的数据集上使用该函数dput()并将输出上传到论坛来更好地帮助您。查看此链接:如何制作出色的 R 可重现示例

你的循环似乎没有做你想做的事。你可以试试运行这个吗:

if(p<39){
 distance <- abs(p-x)
} else if(x<77){
 distance <- (sqrt(1)^2+((p-38)^2)
}

您的循环实际上并没有改变距离的值,而只是打印语句。另外,如果 p>39 且 x>77 会怎样?如果这是可能的,您将需要一个最终else声明,说明在这种情况下您将做什么。

再说一次,如果您发布一个可重现的示例,我会提供更多帮助!


推荐阅读