R中矢量预测中的欧氏距离计算

时间:2019-02-21 16:08:23

标签: r vector distance

我有一个矩阵,该矩阵通过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)
 }

1 个答案:

答案 0 :(得分:0)

尝试给我们提供一个可复制的示例,以便通过在数据集中使用函数dput()并将输出上载到论坛上来更好地为您提供帮助。查看此链接:How to make a great R reproducible example

看起来循环似乎没有达到您想要的效果。您可以尝试运行此代码吗:

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

您的循环实际上并不会更改distance的值,而只是打印语句。另外,如果p> 39和x> 77怎么办?如果可能的话,您将需要最后一个else语句,说明您在这种情况下的操作。

再说一次,如果您能发布一个可复制的示例,我将为您提供更多帮助!