计算从中心到每个数据点的距离

时间:2016-01-30 08:41:23

标签: r

嗨我想计算从中心到每个数据点的距离 我使用了以下代码,但它不起作用,df是我的数据帧,c1是中心 提前致谢

        dist <- NULL
    for(i in 1:nrow(df)) dist[i] <- euc.dist(df[i,],c1[i,])
        dist

2 个答案:

答案 0 :(得分:2)

我的解决方案也是:

让数据为矩阵m:

     x y
[1,] 2 3
[2,] 5 6
[3,] 3 2
[4,] 5 1
[5,] 4 1
[6,] 6 8

然后由:

给出中心
cnt = c(mean(m[,1]),mean(m[,2]))

因此,返回m和cnt的每一行之间距离的代码将是:

apply(m,1,function(x,cnt) {(sqrt((x[1] - cnt[1])^2+(x[2]-cnt[2])^2))},cnt)

结果是:

[1] 2.223611 2.635231 1.900292 2.635231 2.505549 4.859127

答案 1 :(得分:1)

您有两种方法可以解决问题:计算df中点之间的所有距离,或者只计算中心。

第一种方法(效率不高,你计算所有距离并只得到一小部分):

$scope.$watch(function() {
    // Your AJAX code here
}

第二个:

set.seed(123)
mydf <- data.frame(x=runif(10), y=runif(10))
c1 = c(x=3, y=4)
mydf <- rbind(c1,mydf)
as.matrix(dist(mydf))[-1,1] #exclude distance from the center to itself

结果是一样的:

c1 = c(x=3, y=4)
euc.dist <- function(x1) sqrt(sum((x1 - c1) ^ 2))
set.seed(123)
mydf <- data.frame(x=runif(10), y=runif(10))
apply(mydf, 1, euc.dist)