Расчет евклидова расстояния в векторном предсказании в R - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть матрица, которая содержит информацию о местоположении по координатам (например, (1,1)) матрицы 38 * 35.

##(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 голосов
/ 21 февраля 2019

Попробуйте дать нам воспроизводимый пример, чтобы мы могли лучше помочь вам, используя функцию 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, в котором будет указано, что вы будете делать в этом случае.

Опять же, если бы вы опубликовали воспроизводимый пример, я бы вам больше помог!

...