Вычисление евклидова расстояния при сохранении постоянной точки A и изменении точки B в R

В настоящее время я работаю над проектом, для которого меня интересует вычисление расстояния между местонахождением баскетболиста и мячом во время соревнования. Для этого я создал следующую функцию:

## Euclidean distance
distance <- function(x,y){
  x2 <- (x[i]-x[j])^2
  y2 <- (y[i]-y[j])^2
  dis <- sqrt(x2+y2)
}

Я хочу рассчитать расстояние между баскетбольным мячом и игроками, а затем повторить этот процесс для каждого временного интервала данных, которые у меня есть. Таким образом, для каждого временного интервала x1 и y1 должны быть постоянными, в то время как x [j] и y [j] продолжат изменяться от 2 до 11. Я подумал об этом вложенном цикле for, но он дает мне постоянный результат 28,34639. Я добавил ссылку на изображение образца моего фрейма данных. Образец фрейма данных

for(i in i:length(all.movement$x_loc)){
  for(j in j:11){
    all.movement$distance[j] <- distance(all.movement$x_loc, all.movement$y_loc)
    }
  i <- i + 11
}

Я был бы очень признателен за помощь с этой проблемой.


person Bmaik    schedule 26.05.2016    source источник
comment
comment
Вы можете взглянуть на ?dist   -  person RHertel    schedule 26.05.2016


Ответы (1)


Я бы пошел:

set.seed(101)
x <- rnorm(30, 10, 5) # x coordinate
y <- rnorm(30, 15, 7) # y coordinate
df <- data.frame(x, y) # sample data.frame
i = 0
for (i in i:length(df$x)) {
df$distance <- sqrt((x - 5)^2 + (y + 4)^2)} # assume basket coordinates (5, -4)
df # output
person Community    schedule 26.05.2016