2017-02-15 2 views
2

Ich habe einen Datenrahmen, tmp:Was ist Dist() eigentlich Computing?

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

I dist(tmp, method="euclidean", diag=TRUE, upper=FALSE, p=2) berechnen, die ergibt:

  1  2 
1 0.000000   
2 3.434144 0.000000 

I kann nicht einfach herausfinden, wie dies die euklidische Distanz ist. Wenn ich berechnen, was ich denke, sollte der euklidische Abstand sein, sollte es sein:

((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 

Diese discrepant ist von dem, was dist() zurückkehrt.

Nach der Dokumentation sagt, es

verfügbar Abstandsmaße sind (geschrieben für zwei Vektoren x und y):

'euklidischen': Übliche Abstand zwischen den beiden Vektoren (2 Norm aka L_2), sqrt (Summe ((x_i - y_i)^2)).

Wohin gehe ich falsch?

+4

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

+0

'dist (tmp [-1])' wird meine Klassenspalte los und funktioniert. Wie behandelt R in meinem Fall Charaktere der 'Klasse'? –

+1

Als Faktor Werte, 'as.numeric (tmp $ class)'. –

Antwort

1

Do tmp[-1]

tun nur tmp seltsam zu verhalten scheint. Ist das etwas, was als Fehler gemeldet werden sollte ???