[英]Spatial data: calculating the distance of points from the maximum point value and plotting
[英]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.