2017-02-15 33 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()回报不符。

根据该文档,它说

推介距离措施(写为两个向量x和y):

“欧几里德”:两个向量之间通常距离(2范数又名 L_2 ),sqrt(sum((x_i-y_i)^ 2))。

我哪里错了?

+4

尝试'dist(tmp [-1])' –

+0

'dist(tmp [-1])'摆脱我的班级专栏并工作。在上面的例子中,R如何处理'class'的字符? –

+1

作为因子值,使用'as.numeric(tmp $ class)'。 –

回答

1

tmp[-1]

这样做只是TMP似乎运行异常。这是应该作为一个bug报告吗?