如何获得点与多个点之间的距离
How to get distance between points and multiple others
我正在尝试确定数据框中的点与另一个数据框中的其他点之间的距离(欧氏)。
下面是一个数据示例。
x <- rnorm(5)
y <- rnorm(5)
df <- data.frame(x, y)
x1 <- rnorm(5)
y1 <- rnorm(5)
Id <- c(1:5)
df2 <- data.frame(Id, x1, y1)
我试过这个公式来计算距离:
sqrt(((df2$x1 - df$x)^2) + ((df2$y1 - df$y)^2))
但是我找不到如何通过 df1
中的 Id
和 df
中的所有其他方法来获取点之间的距离
感谢帮助
如果您想获得 df2
中每个 (x,y) 点与 df
中所有其他 (x,y) 点之间的距离,您可以执行以下操作,使用你的欧氏距离公式:
euclid_dist <- function(x1, y1, x2, y2) {
sqrt(((x1 - x2)^2) + ((y1 - y2)^2))
}
t(apply(df2, 1, function(a) euclid_dist(a[["x1"]], a[["y1"]], df[["x"]], df[["y"]])))
根据您的数据,您将获得 return:
set.seed(123)
x <- rnorm(5)
y <- rnorm(5)
df <- data.frame(x, y)
x1 <- rnorm(5)
y1 <- rnorm(5)
Id <- c(1:5)
df2 <- data.frame(Id, x1, y1)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.786003 1.9680289 3.070264 2.7295146 2.4865570
[2,] 1.525957 0.5911463 2.131949 1.2195161 0.9712662
[3,] 3.805099 2.5081895 1.353883 1.3216922 1.5449945
[4,] 1.215755 0.4171294 2.442043 1.3887899 1.1471688
[5,] 2.187861 0.9888714 2.258099 0.6619184 0.6856658
此矩阵包含距离,其中每一行代表 df2
中的每个 Id
。
我正在尝试确定数据框中的点与另一个数据框中的其他点之间的距离(欧氏)。 下面是一个数据示例。
x <- rnorm(5)
y <- rnorm(5)
df <- data.frame(x, y)
x1 <- rnorm(5)
y1 <- rnorm(5)
Id <- c(1:5)
df2 <- data.frame(Id, x1, y1)
我试过这个公式来计算距离:
sqrt(((df2$x1 - df$x)^2) + ((df2$y1 - df$y)^2))
但是我找不到如何通过 df1
中的 Id
和 df
感谢帮助
如果您想获得 df2
中每个 (x,y) 点与 df
中所有其他 (x,y) 点之间的距离,您可以执行以下操作,使用你的欧氏距离公式:
euclid_dist <- function(x1, y1, x2, y2) {
sqrt(((x1 - x2)^2) + ((y1 - y2)^2))
}
t(apply(df2, 1, function(a) euclid_dist(a[["x1"]], a[["y1"]], df[["x"]], df[["y"]])))
根据您的数据,您将获得 return:
set.seed(123)
x <- rnorm(5)
y <- rnorm(5)
df <- data.frame(x, y)
x1 <- rnorm(5)
y1 <- rnorm(5)
Id <- c(1:5)
df2 <- data.frame(Id, x1, y1)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.786003 1.9680289 3.070264 2.7295146 2.4865570
[2,] 1.525957 0.5911463 2.131949 1.2195161 0.9712662
[3,] 3.805099 2.5081895 1.353883 1.3216922 1.5449945
[4,] 1.215755 0.4171294 2.442043 1.3887899 1.1471688
[5,] 2.187861 0.9888714 2.258099 0.6619184 0.6856658
此矩阵包含距离,其中每一行代表 df2
中的每个 Id
。