Я не могу понять, как найти евклидово расстояние в одном кадре данных - PullRequest
0 голосов
/ 28 июня 2018

Вот данные, с которыми я работаю:

  rdata <- data.frame(x = c(1, 2, 3, 4, 5), y=c(10, 12, 15, 19, 24))
  ext <- rdist::rdist(rdata)
  View(ext)

Когда я запускаю этот код, я получаю следующую таблицу: enter image description here

Как видно из моей маркировки, правильное евклидово расстояние рассчитывается в диагональной форме, но в таблице также представлено много посторонних данных. Что я могу сделать, чтобы сделать правильные расстояния в одном столбце? Я хочу расстояния между (1, 10) и (2, 12), (2, 12) и (3, 15) и так далее, Заранее спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Матрица, которую вы получаете, дает вам расстояние между всеми парами строк. Кажется, вы просто хотите расстояние между одним рядом и следующим рядом? Я бы посоветовал рассчитать его напрямую, чтобы вы не беспокоились о расчете ненужных пар. Для данных любого существенного размера это будет иметь большое значение в скорости и памяти.

n = nrow(rdata)
result = sqrt(rowSums((rdata[-1, ] - rdata[-n, ])^2))
result
#        2        3        4        5 
# 2.236068 3.162278 4.123106 5.099020 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...