我有一个矩阵,该矩阵通过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)
}
答案 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
语句,说明您在这种情况下的操作。
再说一次,如果您能发布一个可复制的示例,我将为您提供更多帮助!