在 R 中的另一个坐标列表中找到最近的 X、Y 坐标
Find nearest X,Y coordinate within another list of coordinates in R
我有一个 data.frame,其中包含 x 和 y 坐标中动物的位置标签。如下:
> head(Coords)
Tag Animal X Y
1 228 1 -18.226 26.720
2 232 2 -18.268 7.558
3 233 3 -18.274 -2.041
4 307 4 -7.975 -61.421
5 241 5 8.052 -61.364
6 243 6 18.196 -2.118
我现在想计算每只动物的位置与另一只动物的最近坐标之间的最小距离 data.frame。以下示例:
> head(OutsideLines, 10)
X Y
1 -15.22 19.11
2 -15.12 19.11
3 -15.02 19.11
4 -14.92 19.11
5 -14.82 19.11
6 -14.72 19.11
7 -14.62 19.11
8 -14.52 19.11
9 -14.42 19.11
10 -14.32 19.11
有没有办法在 R 中快速有效地做到这一点?
您可以只使用实际距离公式,例如
library(dplyr)
Coords %>% rowwise() %>%
mutate(min_dist = min(sqrt((X - OutsideLines$X) ^ 2 + (Y - OutsideLines$Y) ^ 2)))
#> Source: local data frame [6 x 5]
#> Groups: <by row>
#>
#> # A tibble: 6 × 5
#> Tag Animal X Y min_dist
#> <int> <int> <dbl> <dbl> <dbl>
#> 1 228 1 -18.226 26.720 8.182184
#> 2 232 2 -18.268 7.558 11.947343
#> 3 233 3 -18.274 -2.041 21.370347
#> 4 307 4 -7.975 -61.421 80.780573
#> 5 241 5 8.052 -61.364 83.525871
#> 6 243 6 18.196 -2.118 38.831923
我有一个 data.frame,其中包含 x 和 y 坐标中动物的位置标签。如下:
> head(Coords)
Tag Animal X Y
1 228 1 -18.226 26.720
2 232 2 -18.268 7.558
3 233 3 -18.274 -2.041
4 307 4 -7.975 -61.421
5 241 5 8.052 -61.364
6 243 6 18.196 -2.118
我现在想计算每只动物的位置与另一只动物的最近坐标之间的最小距离 data.frame。以下示例:
> head(OutsideLines, 10)
X Y
1 -15.22 19.11
2 -15.12 19.11
3 -15.02 19.11
4 -14.92 19.11
5 -14.82 19.11
6 -14.72 19.11
7 -14.62 19.11
8 -14.52 19.11
9 -14.42 19.11
10 -14.32 19.11
有没有办法在 R 中快速有效地做到这一点?
您可以只使用实际距离公式,例如
library(dplyr)
Coords %>% rowwise() %>%
mutate(min_dist = min(sqrt((X - OutsideLines$X) ^ 2 + (Y - OutsideLines$Y) ^ 2)))
#> Source: local data frame [6 x 5]
#> Groups: <by row>
#>
#> # A tibble: 6 × 5
#> Tag Animal X Y min_dist
#> <int> <int> <dbl> <dbl> <dbl>
#> 1 228 1 -18.226 26.720 8.182184
#> 2 232 2 -18.268 7.558 11.947343
#> 3 233 3 -18.274 -2.041 21.370347
#> 4 307 4 -7.975 -61.421 80.780573
#> 5 241 5 8.052 -61.364 83.525871
#> 6 243 6 18.196 -2.118 38.831923