gpt4 book ai didi

r - 找到最远的点R中的所有其他点

转载 作者:行者123 更新时间:2023-12-04 04:02:26 25 4
gpt4 key购买 nike

我很难找到解决这个简单问题的方法。我一直在搜索论坛,并且已经很接近答案了,这并不是我真正需要的。

我正在尝试从一组x,y点中找到哪个点距其他点最远,即不是点之间的最大距离,而是距离其余点最远的点。

我试过了

x <-c(x1,x2,x3....)
y <-c(y1,y2,y3...)
dist(cbind(x,y))

这给了我每个点到每个点之间的距离的矩阵。我可以查询MS Excel中的数据并找到答案。在每一列中找到最小值,然后在它们之间找到最大值。

enter image description here

如果要绘制数据,我希望将红线或蓝线的距离(取决于更长的距离)作为输出。

enter image description here

最佳答案

从此示例数据集开始:

set.seed(100)
x <- rnorm(150)
y <- rnorm(150)
coord <- cbind(x,y)
dobj <- dist(coord)

现在 dobj是一个距离对象,但是您不能直接检查它。您必须首先将其转换为矩阵,并确保不要将点与其自身之间的零距离考虑在内:
dmat <- as.matrix(dobj)
diag(dmat) <- NA

后一行用 NA替换距离矩阵中的对角线值。

现在,您可以使用amonk的解决方案:
dmax <- max(apply(dmat,2,min,na.rm=TRUE))

这为您提供了到最近点的最大距离。如果您想知道这些是什么,可以采取额外的步骤:
which(dmat == dmax, arr.ind = TRUE)
# row col
# 130 130 59
# 59 59 130

因此,第130点和第59点是满足您条件的两点。绘制此图将为您提供:
id <- which(dmat == dmax, arr.ind = TRUE) 
plot(coord)
lines(coord[id[1,],], col = 'red')

注意如何两次获取此信息,因为两点之间的欧式距离是对称的(A-> B与B-> A一样长)。

enter image description here

关于r - 找到最远的点R中的所有其他点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com