繁体   English   中英

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

[英]calculating the distance from center to each data points

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

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

还有我的解决方案:

令数据为矩阵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

有两种方法可以解决该问题:计算df点之间的所有距离,或仅以一个中心为单位。

第一种方法(效率不高,您需要计算所有距离并仅获取一小部分子集):

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)

结果是相同的:

4.076530 4.179765 4.213305 4.028456 4.407819 4.282502 4.494677 4.484104 4.413574 3.967853

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM