2017-02-15 10 views
2

У меня есть кадр данных, tmp:Что такое dist() на самом деле вычисление?

class   x   y 
1 A -2.8959969 -0.3192259 
2 B -0.2401775 0.5801373 

Я вычислить dist(tmp, method="euclidean", diag=TRUE, upper=FALSE, p=2) что дает:

  1  2 
1 0.000000   
2 3.434144 0.000000 

Я просто не могу понять, как это евклидово расстояние. Если я вычислить, что я думаю, что расстояние евклидовой должно быть, должно быть:

((A_{x} - B_{x})^2 + (A_{y} - B_{y})^2)^0.5 = 
((-2.8959969 + 0.2401775)^2 + (-0.3192259 - 0.5801373)^2)^0.5 = 
2.803967 

Это противоречивый из каких dist() возвращается.

Согласно документации это говорит

Имеющихся меры расстояний (написано для двух векторов х и у):

«евклидовая»: Обычное расстояние между двумя векторами (2 нормы акой L_2), sqrt (sum ((x_i - y_i)^2)).

Где я иду не так?

+4

try 'dist (tmp [-1])' –

+0

'dist (tmp [-1])' избавляется от моего столбца класса и работает. В моем случае выше, как R обрабатывает символы класса? –

+1

В качестве значений коэффициента 'as.numeric (tmp $ class)'. –

ответ

1

ли tmp[-1]

делая только TMP, кажется, ведут себя странно. Это что-то, о чем следует сообщать в виде ошибки?